NSCocoaErrorDomain Code = 256无法打开文件

sam*_*wen 5 nskeyedarchiver nsdata swift4

该文件是在Objective-C中的旧项目中创建的.

NSKeyedArchiver* archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:dataForWrite];
[archiver encodeObject:dictVer forKey:@"cityVersionDict"];
[archiver finishEncoding];
BOOL flag = [dataForWrite writeToFile:path atomically:YES];
Run Code Online (Sandbox Code Playgroud)

我想通过以下代码在Swift4.0中的新项目中读取此文件:

do {
    let data = try Data.init(contentsOf: path)
} catch {
    print(error)
}
Run Code Online (Sandbox Code Playgroud)

然后捕获错误:错误Domain = NSCocoaErrorDomain Code = 256"无法打开文件"cityVersionDict.archiver"." 的UserInfo = {NSURL = /用户/ SAM /库/开发商/ CoreSimulator /设备/ 51CD0088-EE62-4ED0-8660-4C6486BC7823 /数据/容器/数据/应用/ 5740ADE1-4930-4968-B86F-7E2F5F99F5F8 /库/缓存/ cityVersionDict.archiver}

在Objective-C中,这个文件可以正常读取.我已经仔细检查了路径是否正确.但仍然遇到错误.请帮忙,谢谢

sam*_*wen 25

我发现问题与URL有关.URL必须使用init.(fileURLWithPath:String)创建,然后Data.init(contentsOf:URL)可以正常工作.

  • 哈哈!刚刚花了一个小时试图更改我的文件的权限。谢谢你 :D 归档在“我永远不会再忘记的事情”下。:D (6认同)
  • 但我得到的媒体网址为“​​assets-library://asset/asset.MP4?id=F65960BD-9AD8-4BBC-8C17-12345F10EB74E&ext=MP4”。我认为这就是问题所在,但无法弄清楚为什么?有什么帮助吗? (2认同)