在iOS上编写文件的问题

时间:2016-09-13 21:19:15

标签: ios cocoa-touch filesystems nsfilemanager

我正在与极少数用户报告的以下错误 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)

有人会暗示为什么会发生这种情况吗?

1 个答案:

答案 0 :(得分:0)

你对/ var有sudo / chown特权吗?如果没有,并且您在Mavericks上运行操作系统,则可能需要在安全模式下重新启动并禁用CSRUtil

Documentation on CSRUtil