這不是一個有關相關問題的問題。這是我試圖加深對Objective-C或更具體的Cocoa Foundation的理解的問題。什麼時候應該使用NSURL而不是NSString,反之亦然?
當處理從服務器上傳和下載文件到我的應用程序時,我經常在使用NSURL
或NSString
來處理所有相關的事情。當然,當我有一個現有的API時,我只是按照規範來使用它。但是,當我存儲自己的路徑或創建自定義類來處理它們時,我很困惑哪兩個會是更好的選擇。
NSString
無處不在,它有便利的方法,如stringByAppendingPathComponent:
和stringByAppendingPathExtension:
。通過在NSURL實例上調用[url path]
,可以通過創建一個帶有[NSURL URLWithString:@"string"]
的新實例並反過來轉換爲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);
爲什麼我會選擇使用一個比其他的,特別是當兩者之間的轉換是那麼容易做?爲什麼Apple經歷了爲使用這兩種數據類型創建幾乎相同的API的麻煩?
如果有人更深入地瞭解何時使用NSURL而不是NSString處理文件路徑和遠程URL的自己的類,請分享!乾杯。
在本地文件系統上引用文件時怎麼辦? – Jason
你是什麼意思? 'NSURL'有一套處理文件系統URL的廣泛的方法(https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html#/)。/apple_ref/DOC/UID/20000301-SW25)。 – epologee
NSString也是如此。看起來NSURL通常是首選,但我想知道是否也帶有本地文件。 – Jason