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

我的应用程序将一些文件写入文件系统,它被安装在/应用程序中而不是在/ 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). 

正如@cahn所说,你的应用程序由于权限问题而被拒绝。 即使安装在/Applications/ ,应用程序通常以用户mobile运行。 从这个login会话中可以看到:

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

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

如果你看看这个关于在bigboss.org上构buildCydia应用程序的文档 ,你会发现他们build议越狱应用程序在/var/mobile/Library/YOURAPPNAME创build文档目录:

1)Appstore应用程序在/ var / mobile / Applications / GUID /文件夹的沙箱中运行。 越狱应用程序运行在/应用程序

2)Appstore应用程序具有由安装过程创build的“文档”文件夹。 越狱应用程序不。 这是由应用程序创build自己的文件夹。 如果您需要这种types的文件夹,则必须在applicationDidFinishLaunching函数中使用简单的mkdir命令来创build此文件夹。 只需添加一个简单的函数: mkdir(“/var/mobile/Library/YOURAPPNAME”, 0755); 如果文件夹已经存在,没有任何伤害。 您希望这样做,因为安装过程以root用户身份运行,应用程序以用户移动方式运行。 如果Cydia为你做这个,那么这个文件夹会有不正确的权限。

cocoa错误513是NSFileWriteNoPermissionError 。 你可以在Foundation Constants Reference中find它。 也许你没有/var写入权限。