2012-07-18 40 views
2

很多類的版本都可以作爲filePath或NSURLs與NSStrings一起使用。一個例子:我想使用NSString filePaths或NSURLs嗎?

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

是否有一個/顯式/偏好使用一個比其他?我正在尋找關於這個主題的文檔。

回答

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; 

因此你可以得到正確的URL以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。它必須是一個文件庫

祝你好運。 :)

1

This post

「一般用於路徑相關的操作,你應該更喜歡在NSURL NSString的 因爲路徑信息可以(根據對的NSFileManager類的引用)的NSURL更有效地存儲 。所以我 會建議爲你的API也使用NSURL

而且NSURL有URLByAppendingPathComponent:和 URLByAppendingPathExtension:這樣的便利服務以及」

相關問題