epo*_*gee 9 cocoa cocoa-touch objective-c nsurl nsstring
这不是关于相关问题的问题.这是一个我试图加深对Objective-C或更具体的Cocoa Foundation的理解的问题.
当处理从服务器上传和下载文件到我的应用程序时,我经常在使用NSURL或NSString所有与路径相关的东西之间徘徊.当然,当有现有的API时,我只是根据规格使用它.但是当我存储自己的路径或创建处理它们的自定义类时,我很困惑这两个中哪一个会更好.
NSString在任何地方都使用,它有像stringByAppendingPathComponent:和的方便的方法stringByAppendingPathExtension:.[NSURL URLWithString:@"string"]通过调用[url path]NSURL实例,我可以通过创建一个新实例和反过来轻松转换为NSURL .但差异是有原因的,对吧?
当我查看像NSFileManager这样的头文件时,我的困惑就会增加.这两种方法非常接近:
- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error;
- (BOOL)copyItemAtURL:(NSURL *)srcURL toURL:(NSURL *)dstURL error:(NSError **)error NS_AVAILABLE(10_6, 4_0);
Run Code Online (Sandbox Code Playgroud)
为什么我会选择使用一个而不是另一个,特别是当两者之间的转换如此容易时?为什么Apple要为使用这两种数据类型创建几乎相同的API?
如果有人对您自己的类处理文件路径和远程URL使用NSURL而不是NSString有更深入的了解,请分享!干杯.
NSUrl 知道如何处理几乎任何网址王 - 不仅仅是网址,而是将其分成易于访问的块:
现在你可以轻松地向url-object询问这个块,而在字符串中可能需要过多的if规则或复杂的正则表达式.
通常,对于与路径相关的操作,您应该NSURL更喜欢它NSString,因为可以更有效地存储路径信息NSURL(根据 的类参考NSFileManager)。所以我建议您也使用 API NSURL。
也NSURL有URLByAppendingPathComponent:,URLByAppendingPathExtension:所以也很方便:-)
| 归档时间: |
|
| 查看次数: |
2334 次 |
| 最近记录: |