0

ベースURLのないローカルファイルへのNSURLがあります。ベースURLを別のローカルディレクトリに変更したいのですが、相対パスはそのURLを基準にしています。例えば

 NSURL *path = [NSURL fileURLWithPath: @"/Users/username/Desktop/Photos/Photo1.jpg"];

ここで、ベース部分をに変更し/Users/username/Desktop/SomeFolderたい場合は、によって返されるNSStringを次の[path relativePath];ようにします。"../Photos/Photo1.jpg"

これを行う簡単な方法はありますか?これを行うNSURLメソッドが見つからないようです。新しいベースと古い絶対パスのパスコンポーネントを調べて、自分自身の相対部分を構築することはできますが、もっと簡単な方法はありますか?

4

2 に答える 2

3

NSURLオブジェクトは不変であるため、作成後にベース URL を変更する方法はありません。あなたの最善の策は、で新しいNSURLインスタンスを作成することURLWithString:relativeToURL:です。しかし、私はまだあなたが望むものはうまくいかないと思います。レシーバー-[NSURL relativePath]が絶対 URL (あなたの例) の場合、このメソッドは と同じ値を返しますpath

于 2009-11-25T20:53:28.433 に答える