【发布时间】:2017-01-21 14:14:02
【问题描述】:
我正在处理由极少数用户报告的以下错误 NSCocoaErrorDomain 513:
Unable to create directory at path /var/mobile/Containers/Data/Application/EBE2C5D8-5AEC-4D62-9393-B19CAD598FE5/Documents/documents/FF2F88FB-2C07-4FA3-988E-58AD5C21F659/9A02F8A0-74EB-4ED6-81B6-4F40653856D3.
Error: Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “9A02F8A0-74EB-4ED6-81B6-4F40653856D3” in the folder “FF2F88FB-2C07-4FA3-988E-58AD5C21F659”."
UserInfo={
NSFilePath=/var/mobile/Containers/Data/Application/EBE2C5D8-5AEC-4D62-9393-B19CAD598FE5/Documents/documents/FF2F88FB-2C07-4FA3-988E-58AD5C21F659/9A02F8A0-74EB-4ED6-81B6-4F40653856D3,
NSUnderlyingError=0x15e09de00 {
Error Domain=NSPOSIXErrorDomain
Code=13 "Permission denied"
}
}
此错误表示由于权限错误而无法创建目录。这就是我迷失的地方,因为我能看到的唯一原因是如果我在我的应用程序的沙箱之外创建一个文件。
产生此错误的代码:
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDirectory = [paths objectAtIndex:0];
NSString *directory = [documentsDirectory stringByAppendingPathComponent:documentsPathAndUUIDs];
NSError *error = nil;
if (![[NSFileManager defaultManager] createDirectoryAtPath:directory
withIntermediateDirectories:YES
attributes:nil
error:&error]) {
NSError(@"Unable to create directory at path %@. Error: %@", directory, error);
}
有几点值得注意:
- 此路径未保存,每次都重新生成,因此应用容器在安装之间不会发生变化;
- 用户似乎有可用的磁盘空间;
- 这至少会影响 iOS 9(我没有足够的报告知道它是否也会影响 iOS 10)
有人知道为什么会发生这种情况吗?
【问题讨论】:
标签: ios cocoa-touch filesystems nsfilemanager