【发布时间】:2015-06-30 13:04:55
【问题描述】:
我正在尝试编写一个转换文件的 Mac 应用程序。我一开始就卡住了,因为我的应用程序无法打开本地文件,至少在调试器中运行时是这样。我使用 NSOpenPanel 创建一个有效的文件 NSURL:
“file:///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方法。 -
我正在使用 fileUrlWithPath 方法。在 Swift 中,我使用 url 字符串,并将其用作 fileUrlWithPath 的参数: xmlInFileURL = NSURL.fileURLWithPath(xmlInFilePath)
-
xmlInFilePath很可能代表一个 URL 而不是文件路径。
标签: xcode macos debugging filesystems nsurl