2

许多类都有使用 NSStrings 作为 filePath 或 NSURLs 的版本。一个例子:

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

是否有 /explicit/ 偏好使用一个而不是另一个?我正在寻找有关该主题的文档中的注释。

4

2 回答 2

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 个步骤获得正确的网址

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://.

或者,您可以检查该方案以查看它是否正确。但这是我在使用 AVAsset 时遇到的一个问题,因为它不会单独从路径加载 NSURL。它必须是一个文件URL

祝你好运。:)

于 2012-07-18T23:18:04.247 回答
1

根据这篇文章

“通常对于与路径相关的操作,您应该更喜欢 NSURL 而不是 NSString,因为路径信息可以更有效地存储在 NSURL 中(根据 NSFileManager 的类参考)。所以我建议您也使用 NSURL。

NSURL 也有 URLByAppendingPathComponent: 和 URLByAppendingPathExtension: 所以方便”

于 2012-07-18T23:23:06.513 回答