2017-03-26 7 views
0

は、/ tmpがプライベートを/ tmp /へのシンボリックリンクで、まだ私はこれを行うとき:resolvingSymlinksInPath()はどのパスが間違っていますか? MacOSで

URL(fileURLWithPath: "/tmp").resolvingSymlinksInPath().path 

それは"/tmp"を返します。

(私はアップルにこのことを報告してきた、と彼らは重複したとして、それを閉じたので、彼らはすでにそれについて知っている。)

それが公にこのメソッドによって返された不正な値を持っているもののパス知られていますか?内部的にハードコーディングされたパスが2つしかない場合は、作業resolvingSymlinksInPath()を最初から書き直すよりも、チェックする方が簡単です。

答えて

1

resolvingSymlinksInPathのためのマニュアルを参照してください:

受信パスの名前は/プライベートで始まっている場合、/プライベート指定子オフこのプロパティストリップが、結果は既存のファイルの名前も提供されます。

たとえば、結果が/private/varで、/varが返されます。

これは慣習に基づいているように見えますが、結果のパスが同じファイルシステム項目を参照するかどうかのチェックはありません。例えば。 /testのためのシンボリックリンクを解決し、その後/private/a/a/private/aとSYMリンク/testを作成し、その結果、それが/private/a

+0

ああと同じされていないにも関わらず/aです!それはNSURLにあります - 私はこの情報を持っていない(しかし、まだこの動作を持っています)古い同じ同じ名前のメソッドを持っているNSStringのドキュメントをチェックしていました。 – Ssswift

+0

これは大きなヒントですが、既存のすべての動作を説明しているかどうかはわかりません。私の例では、受信者は "/ tmp"であり、 "/ private"で始まらない。また、戻り値から "/ private"を取り除いています。 – Ssswift

+0

アップルの言葉はここで最高ではないが、あなたが見ていることを意味すると同意する。たぶん「解決されたパスが...で始まるならば...」はより良い言語になるでしょう。 – CRD

関連する問題