removeItemAtPath文件大小

时间:2015-03-20 14:12:55

标签: ios objective-c

我的应用程序附带了一个资产文件夹和JSON。首次安装时,它会获取资产和JSON,将其映射到核心数据并在完成时删除该文件夹。

这似乎按预期工作,通过iOS模拟器查看Finder中的应用程序包,我看到文件夹删除,应用程序的占用空间减小了。

但是,在设备上运行此设置时,删除文件夹后设置中的使用量不会减少。有谁知道为什么会这样?

感谢您的时间。

2 个答案:

答案 0 :(得分:2)

模拟器是Mac OS应用程序。应用程序包在Mac OS上可读/写,因此可以正常工作。

但是,iOS上的应用包是只读的。您对removeItemAtPath的调用将在实际的iOS设备上失败。

模拟器有各种各样的问题。这是一。另一个文件系统问题是在大多数Mac上,文件名忽略大小写。 (我说“大多数mac”因为你可以用不同的方式配置Mac文件系统,其中一些是区分大小写的,有些则不是.Mac OS卷的默认文件系统不区分大小写。)但是在iOS文件名上总是区分大小写。因此,如果您编写的命名文件的代码与案例不匹配,它将在SIM上工作(在大多数Mac上)但在设备上失败。

在其他情况下,模拟器实际上使用Mac OS版本的OS框架来实现不同的API,并且行为中存在微妙且不那么微妙的差异。过去,您可以使用NSURLDownload(仅限Mac OS)编写代码,它可以在sim上编译和运行,但在编译实际的iOS设备时会出现未定义的符号错误。我不知道这是否仍然存在。

这里的教训是尽早和经常测试实际的目标设备。

编辑:

另一点:即使在有效的Mac OS上,修改你的应用程序包也是非常糟糕的做法。

答案 1 :(得分:0)

不能不应该以任何方式修改app bundle。

更好的方法是提供一个“种子”coredata数据库,以便复制到Documents文件夹中(如果它当前不存在)。