许多类都有与NSStrings一起使用的版本作为filePath或NSURL。一个例子:
- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error
- (BOOL)copyItemAtURL:(NSURL *)srcURL toURL:(NSURL *)dstURL error:(NSError **)error
是否有/明确/偏好使用一个而不是另一个?我正在寻找关于该主题的文档中的注释。
答案 0 :(得分:1)
它真的取决于你。但是有很多东西只使用URL。
您可以轻松地从NSURL转到路径。但走另一个方向需要一些规范化。
使用路径,例如上面的方案已经给你一个不正确的网址。
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。它必须是fileURL
祝你好运。 :)答案 1 :(得分:1)
“通常对于路径相关的操作,您应该更喜欢NSURL NSString因为可以更有效地存储路径信息 在NSURL中(根据NSFileManager的类引用)。所以我 会建议您使用NSURL。
NSURL还有URLByAppendingPathComponent:和 URLByAppendingPathExtension:因此也提供了便利“