【问题标题】:Writing to files in bundle?写入捆绑文件?
【发布时间】:2009-08-28 15:44:57
【问题描述】:

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

【问题讨论】:

  • 您是否在询问是否可以写入存储在应用程序包中的文件?

标签: objective-c cocoa xcode


【解决方案1】:

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

不过,您不想要这样做。有各种原因,但你会破坏代码签名,这是一个很大的原因。您应该改用已建立的约定(例如写入 Library:Application Support:Your App)。

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

【讨论】:

  • 另外,并非所有用户都可以写入应用程序包中的文件和目录。你真的不应该写入应用程序包。
【解决方案2】:

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

【讨论】:

  • 更新了指向新位置的链接
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 2018-04-01
  • 2020-11-15
  • 1970-01-01
相关资源
最近更新 更多