Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何阻止xcode调试器损坏OS X上的文件系统NSURL?_Xcode_Macos_Debugging_Filesystems_Nsurl - Fatal编程技术网

如何阻止xcode调试器损坏OS X上的文件系统NSURL?

如何阻止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

我正在尝试编写一个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
    }
}
答案是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而不是文件路径。