如何阻止xcode调试器损坏OS X上的文件系统NSURL?
我正在尝试编写一个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 然后读取文件失败,没有这样的文件或目录错误 在开发过程中如何防止这种损坏 例如,无论选择哪个文件,都会出现错误:如何阻止xcode调试器损坏OS X上的文件系统NSURL?,xcode,macos,debugging,filesystems,nsurl,Xcode,Macos,Debugging,Filesystems,Nsurl,我正在尝试编写一个Mac应用程序来转换文件。我一开始就被卡住了,因为我的应用程序无法打开本地文件,至少在调试器中运行时是这样。我使用NSOpenPanel创建有效的文件NSURL: "file:///Volumes/Seagate_1tib/projects/dataskunk/wasteproduct.xml" 但在xcode、调试器或其他任何地方,这都会被破坏 /Users/charlweed/Library/Developer/Xcode/DerivedData/dataskunk ghk
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
}
}
答案是NSURL.fileURLWithPath不接受URL路径作为参数,只接受文件系统路径。所以file:///Volumes/disk/file.xml 错误,/Volumes/disk/file.xml正确
损坏是NSURL将当前目录前缀为它认为是相对文件系统路径字符串的内容 这不是因为Xcode损坏了您的URL,而是因为您没有正确使用URL。给定结果路径中的file:段,您似乎试图以错误的方式将其转换为文件系统路径。如果需要路径,请确保使用NSURL的path方法。请参阅我正在使用fileUrlWithPath方法。在Swift中,我使用url字符串,并将其用作fileUrlWithPath的参数:xmlinfirel=NSURL.FileUrlWithPathXmlinfilePathXmlinfilePathXmlinfilePath很可能表示url而不是文件路径。