我的应用程序会将一些文件写入文件系统并将其安装在/ 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).
答案 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这样做 对你而言,该文件夹将具有不正确的权限。