【问题标题】:Core Data and iTunes File Sharing - Move/hide the .sqlite file on app update?核心数据和 iTunes 文件共享 - 在应用更新时移动/隐藏 .sqlite 文件?
【发布时间】:2011-05-31 20:47:19
【问题描述】:

我有一个使用 Core Data 进行数据存储的 iPad 应用程序。我想在 iTunes 中启用文件共享,我真的不希望用户能够删除或修改 .sqlite 文件。

我可以将文件移动到不同的隐藏目录吗?

或者,可以将文件设为只读吗?只要无法更改,我不介意用户可以访问该文件。

我怀疑目前有一个微不足道的解决方案正在逃避我。

【问题讨论】:

  • 你想使用 NSLibraryDirectory。有关更多信息,请参阅此答案:stackoverflow.com/questions/1567134/…
  • 谢谢,这很有帮助。我想我对如何处理从 Documents 目录中移动文件感到最困惑。迁移本身似乎应该是微不足道的(只需在应用程序委托中创建持久存储之前移动文件?然后在启动时检查每个位置的有效文件?

标签: objective-c core-data ios itunes


【解决方案1】:

您需要将核心数据数据存储在recommended directories 之一中。如果需要,您可以通过将数据存储复制到文档目录中的文件共享来使用户可以访问数据存储。无法限制用户覆盖或删除文档目录中的文件或目录(通过 iTunes 文件共享)。

【讨论】:

  • 您确实不想将数据库存储在缓存目录中:操作系统可以随时删除其内容。此外,它没有备份,所以如果用户必须恢复他的设备(或更换它,或其他),数据库肯定会消失。你想要图书馆目录。请参阅我对这个问题的评论。
  • 我上面链接的文档暗示你不能使用库目录,尽管使用应用程序支持目录可能更合适。文档说:“您可以使用 NSUserDomainMask 以外的域掩码参数或表 3-1 中的目录常量调用 NSSearchPathForDirectoriesInDomains,但应用程序将无法写入任何返回的目录位置。”我没有尝试直接写入库文件夹,但我希望不能?我会让我的答案更笼统和开放。
  • 太好了,感谢您的更新。您确实可以写入设备上的库目录。你对NSApplicationSupportDirectory 的看法可能是对的,我没有尝试过,但它听起来确实合适并且在列表中。
猜你喜欢
  • 2011-04-21
  • 2016-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-30
相关资源
最近更新 更多