为什么我会得到;可可错误513“;将文件写入“时”/var/mydir/files";在越狱的iPhone上?

为什么我会得到;可可错误513“;将文件写入“时”/var/mydir/files";在越狱的iPhone上?,iphone,ios,jailbreak,nsfilemanager,Iphone,Ios,Jailbreak,Nsfilemanager,我的应用程序会将一些文件写入文件系统,它安装在/Application而不是/var/mobile/Application中,在我的开发iPhone上,一切正常。但当分发给其他人时,他们得到了“Cocoa错误513”。文件写入/var/mydir/files,这是什么问题?在得到充分许可的情况下,哪里才是适合我写作的地方? 多谢各位 代码: 错误: The operation couldn't be completed. (Cocoa error 513). Cocoa错误513是nsFile

我的应用程序会将一些文件写入文件系统,它安装在/Application而不是/var/mobile/Application中,在我的开发iPhone上,一切正常。但当分发给其他人时,他们得到了“Cocoa错误513”。文件写入/var/mydir/files,这是什么问题?在得到充分许可的情况下,哪里才是适合我写作的地方? 多谢各位

代码:

错误:

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

Cocoa错误513是
nsFileWriteOnPermissionError
。你可以在一本书中找到它。也许你没有
/var

的写入权限,正如@cahn所说,你的应用程序因为权限问题而被拒绝。即使安装在
/Applications/
中,应用程序也通常以用户
移动设备运行。从这个登录会话中可以看到:

$sshmobile@iphone5
mobile@iphone5的密码:
iPhone5:~mobile$cd/var
iPhone5:/var mobile$mkdir mydir
mkdir:无法创建目录“mydir”:权限被拒绝
移动用户没有直接在
/var/
下的写入权限

如果你看一下,你会发现他们建议越狱应用程序在
/var/mobile/Library/YOURAPPNAME
创建文档目录:

1) Appstore应用程序在以下位置的沙箱中运行: /var/mobile/Applications/GUID/folder。越狱应用程序在中运行 /应用程序

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


谢谢你,但是像我这样的应用程序在哪里可以用本机权限编写文件呢?我不知道越狱应用程序的规范是什么。对于appstore应用程序
[fileManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask]
就是这个地方。@Bob,正如我在回答中所说,建议的位置是
/var/mobile/Library/YOURAPPNAME
。关于这个问题的上一个答案,请参阅:的可能副本question@AlexReynolds,在这种情况下,我不认为这个问题/答案是重复的。这个问题是关于越狱应用程序的,安装在
/Applications/
中。这样的应用程序将具有不同的文档目录,并且必须使用不同的API来创建它。@Nate,我遇到了另一个问题,因为我应该钩住每个应用程序的UIResponder,包括SpringBoard和任何其他应用程序。在钩住中,将写入指定的文件。如果我将路径设置为/var/mobile/Library/MyApp,我发现只有SpringBoard和MyApp才能成功编写。那么每个应用程序都有一个可以写和读的地方吗?@Bob,你是否希望挂接安装在
/var/mobile/Applications/
下的普通应用程序(应用商店应用程序)?如果是这样的话,那么我认为在他们的沙箱之外没有任何位置可供您使用。我会为你再检查一遍,稍后再发更多。可能有一些地方,比如照片文件夹,音乐文件夹,你可以使用。。。我不确定。非常感谢你,内特。
The operation couldn't be completed. (Cocoa error 513).