写入包中的文件?

时间:2009-08-28 15:44:57

标签: objective-c cocoa xcode

如果向下滚动到此link的“写入文件和URL”部分,路径是否必须是磁盘上的文件?是否可以写入捆绑包中的文件,或者必须始终首先部署它?

2 个答案:

答案 0 :(得分:11)

您可以根据需要将文件写入应用程序包。只需通过NSBundle的pathForResource:ofType:方法获取文件的路径,您就可以写入该文件。如果您只想要捆绑包的目录,请使用resourcePath

但是, 有各种原因,但你会打破代码签名,这是一个很大的问题。您应该使用已建立的约定(例如写入库:应用程序支持:您的应用程序)。

编辑:为了一个(可能)更有说服力的理由不这样做...当我第一次学习Cocoa编程时,我保存到了捆绑包因为我不想打扰图书馆。但是,这真的很烦人,因为每次对程序进行更改时,都会丢失该程序的所有已保存数据/设置(假设您没有使用NSUserDefaults作为首选项)。我不得不将它从旧版本移到新版本。通过使用库,您不必担心这一点。

答案 1 :(得分:5)

捆绑在磁盘上;它只是“.app”目录。但是,您不应该写入此目录中的文件。虽然目前可以在Mac上使用,但它会破坏代码签名。在iPhone上,你已经无法写入自己的软件包,我们应该会在Mac上看到这种限制。您应该将应用程序文件编写到〜/ Library或〜/ Documents下的各个目录中。有关指导,请参阅File System Programming Guide