为什么在越狱的iPhone上将文件写入“/ var / mydir / files”时会出现“Cocoa error 513”?

时间:2013-07-23 00:31:01

标签: iphone ios jailbreak nsfilemanager

我的应用程序会将一些文件写入文件系统并将其安装在/ Application而不是/ var / mobile / Application中,在我的开发iPhone上,一切顺利。但是当分发给其他人时,他们得到了“Cocoa error 513” “。文件写在/ var / mydir / files,那有什么问题?在完全允许的情况下,我可以在哪里找到合适的地方? 谢谢。

代码:

NSString *dir = @"/var/mydir/docs/";
NSFileManager *fileManager = [NSFileManager defaultManager];
if(![fileManager fileExistsAtPath:dir]) {
    NSError *error = nil;
    BOOL createdDir = [fileManager createDirectoryAtPath:dir withIntermediateDirectories:YES attributes:nil error:&error];
    if (!createdDir) {
        UIAlertView *errorAlertView = [[UIAlertView alloc] initWithTitle:@"Attention" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [errorAlertView show];
    }
}

错误:

The operation couldn't be completed. (Cocoa error 513).

2 个答案:

答案 0 :(得分:3)

可可错误513是NSFileWriteNoPermissionError。您可以在Foundation Constants Reference中找到它。也许您没有/var的写入权限。

答案 1 :(得分:2)

正如@cahn所说,由于权限问题,您的应用被拒绝了。即使安装在/Applications/中,应用通常也会以用户mobile运行。正如您在此登录会话中看到的那样:

$ ssh mobile@iphone5
mobile@iphone5's password: 
iPhone5:~ mobile$ cd /var
iPhone5:/var mobile$ mkdir mydir
mkdir: cannot create directory `mydir': Permission denied

移动用户没有直接在/var/下拥有写入权限。

如果你看一下at this document on building Cydia apps on thebigboss.org,你会发现他们建议越狱应用程序在/var/mobile/Library/YOURAPPNAME创建文档目录:

  

1)Appstore应用程序在沙箱中运行   在/ var /移动/应用/ GUID /文件夹。 Jailbroken app运行于   /申请

     

2)Appstore应用程序有一个由。创建的Documents文件夹   安装过程。越狱应用程序没有。这取决于应用程序   创建自己的文件夹。如果您需要这种类型的文件夹,您必须   用你的简单的mkdir命令创建它   applicationDidFinishLaunching函数。只需添加一个简单的功能:   mkdir(“/var/mobile/Library/YOURAPPNAME”, 0755);如果文件夹已经存在   存在,没有伤害。您希望这样做是因为安装过程   以root用户身份运行,应用程序以用户移动方式运行。如果Cydia这样做   对你而言,该文件夹将具有不正确的权限。