2

多くのクラスには、NSStrings を filePath または NSURLs として使用するバージョンがあります。一例:

- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error
- (BOOL)copyItemAtURL:(NSURL *)srcURL toURL:(NSURL *)dstURL error:(NSError **)error

どちらか一方を使用する/明示的な/設定はありますか? このトピックに関するドキュメントでメモを探しています。

4

2 に答える 2

1

この投稿ごと:

「一般に、パス関連の操作では、パス情報をNSURLに効率的に格納できるため(NSFileManagerのクラス参照による)、NSStringよりもNSURLを優先する必要があります。したがって、APIにはNSURLも使用することをお勧めします。

また、NSURLにはURLByAppendingPathComponent:とURLByAppendingPathExtension:があるので、便利さも提供されます。」

于 2012-07-18T23:23:06.513 に答える
1

それは本当にあなた次第です。ただし、URL のみを使用するものはたくさんあります。

NSURL からパスに簡単に移動できます。しかし、他の方向に進むには、正規化が必要です。

たとえば、スキームが既にあるパスを使用すると、不適切な URL が返されます。

NSString *pathString = @"file://localhost/etc..../Document.txt";
NSURL *fileURL = [NSURL fileURLWithPath:pathString];// This will not work.

ただし、正しく初期化されていれば、URL からのパスは正しいパスであると期待できます。

NSURL *fileURL = [NSURL URLWithString:pathString];
NSURL *sanePath = fileURL.path;

したがって、3 つのステップで正しい URL を取得できます。

NSURL *fileURL = [NSURL URLWithString:pathString];
NSURL *sanePath = fileURL.path;

// You can at this point use the Path and expect it will be correct.

fileURL = [NSURL fileURLWithPath:sanePath];

// You can at this point use fileURL and know it will be a correct fileURL with file://.

または、スキームが正しいかどうかを確認することもできます。しかし、これはパスだけから NSURL をロードしないため、AVAsset で遭遇した問題です。fileURL でなければなりません

幸運を。:)

于 2012-07-18T23:18:04.247 に答える