我想寫一個轉換文件的Mac應用程序。我被困在一開始,因爲我的應用程序無法打開本地文件,至少在調試器中運行時。我用的是NSOpenPanel創建一個有效的文件NSURL:如何阻止xcode調試器在OS X上損壞文件系統NSURL?
「文件:///Volumes/Seagate_1tib/projects/dataskunk/wasteproduct.xml」
但在Xcode的某個地方,或者調試器或什麼的,這得到錯位成
「/Users/charlweed/Library/Developer/Xcode/DerivedData/dataskunk-ghkiumvdkopxarhavynetidlqxio/Build/Products/Debug/file:/Volumes/bigdrive/dataskunk/wasteproduct.xml」
讀取文件然後以「沒有這樣的文件或目錄錯誤」失敗。
如何在開發過程中防止這種損壞?
例如,這給出了錯誤,無論選擇什麼樣的文件:
let fileResult = openFileDialog("Choose File", message:"Message")
let xmlInFileURLOpt: NSURL? = NSURL.fileURLWithPath(fileResult)
if let xmlInFileURL = xmlInFileURLOpt
{
var xmlFileError: NSError?
if !xmlInFileURL.checkPromisedItemIsReachableAndReturnError(&xmlFileError){
println("\(xmlFileError)")
return
}
}
這不是因爲Xcode正在損壞您的URL,這是因爲您沒有正確使用該URL。給定結果路徑中的'file:'段,你似乎試圖把它變成文件系統路徑的方式不正確。如果你需要一個路徑,一定要使用'NSURL'的'path'方法。 – zneak
請參閱[在objective-c中獲取NSURL的部分](http://stackoverflow.com/questions/3692947/get-parts-of-a-nsurl-in-objective-c) – zneak
我正在使用fileUrlWithPath方法。在Swift中,我使用url字符串,並將其用作fileUrlWithPath的參數: xmlInFileURL = NSURL.fileURLWithPath(xmlInFilePath) – Charlweed