- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的 iOS 应用程序已经过审核,但因 iOS Data Storage Guidelines 被拒绝.最后被拒绝了,因为我的Core Data数据库(sqlite)位于/Documents文件夹中。我知道,这个文件夹应该只被使用,它的数据不能被我的应用程序重新创建。无论如何我选择把它放在那里的原因是,我数据库中的一个实体包含一个属性,告诉是否给定的新闻已被阅读。无法重新创建此信息。这还不足以将数据库放在 /Documents 文件夹中吗?
另一件事是,我的应用程序的当前版本不使用此值来可视化新闻项是否已被阅读。那么,我应该告诉审查团队关于这个属性和我认为它应该放在文档文件夹中的论点——还是应该把它移到 /Library/Cache/?
最佳答案
应用审核团队希望您将数据分开。将可重新创建的部分存储在 Cache 文件夹中,将无法重新创建的内容存储在 Documents 文件夹中。如果 Documents 中有一些理论上可以重新创建的东西也没关系——没有人会注意到标题或日期戳——但是如果可以的话,长文本文档、视频、音频或图像应该保存在 Cache 文件夹中稍后再次下载。
有几种不同的方法可以做到这一点:
将下载的内容存储在缓存文件夹中,并且只将内容的文件名放入您的 Core Data 数据库中(或者从其他内容计算文件名,例如从中下载它的 URL 的 SHA-1 哈希值)。确保您的代码将重新下载不在缓存中的任何内容。
使用两个 Core Data 存储和一个存储协调器。请注意,您不能将一个实体的属性拆分到两个商店中,因此您可能必须将一些实体分成两半。您也不能创建从一个存储中的对象到另一个存储中的对象的关系,因此您必须改为存储对象 ID URI。请参阅 "Relationships and Fetched Properties" section 中的“跨商店关系”核心数据编程指南的更多详细信息。
无论您做什么,请记住 iOS 可能会随时清除您的缓存文件夹。准备好缓存文件夹中的文件消失;如果发生这种情况,您应该在用户请求时重新下载文件。
关于objective-c - iOS 核心数据 : When is data recreatable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8951820/
我是一名优秀的程序员,十分优秀!