我们最近在审核过程中因以下问题遭到拒绝:
==========
2.23
我们仍然发现您的应用不遵循iOS数据存储 根据App Store审核指南要求的指南。
特别是,我们发现在发布和/或内容下载时,您的 app在iCloud备份目录中存储非用户生成的内容, 这是不合适的。要检查应用存储的数据量:
- 安装并启动您的应用
- 转到设置> iCloud>存储&备份>管理存储
- 如有必要,请点按“显示所有应用”
- 检查应用的存储空间
iOS数据存储指南表明只有内容即 用户使用您的应用创建,例如文档,新文件,编辑等, 应该由iCloud支持。
您的应用使用的临时文件应仅存储在/ tmp中 目录;请记得删除存储在此位置的文件 当用户退出应用时。
可以重新创建但必须保持正常运行的数据 您的应用 - 或者因为客户希望它可以离线使用 使用 - 应标记为“不备份”属性。对于NSURL 对象,添加NSURLIsExcludedFromBackupKey属性以防止 备份相应的文件。对于CFURLRef对象,请使用 对应的kCFURLIsExcludedFromBackupKey属性。
==========
我们的(仅适用于iOS 6)应用程序拥有用户喜爱的汽车系列。
我们希望通过一系列经典汽车预先填充此系列,他们可以删除这些汽车,或者在应用程序中随意编辑。汽车的整个数据库,包括用户创建的数据库和预加载的条目,应备份到iCloud。
目前,每辆车,无论是由用户创建还是由一个起始集合创建,都存储在/ Library / Application Support / com.company.appname / DataModel.sqlite中,据我所知,它已备份到iCloud。汽车条目有一个图像文件,该文件与sqlite数据库文件保存在同一目录中。
然后使用fetchedresultscontroller和标准核心数据代码在tableview中显示汽车。
以下是一些相关文档。
https://developer.apple.com/icloud/documentation/data-storage/
阅读完这些内容后,如果我们有一个需要备份但必须从预加载的用户可修改/可删除项目开始的数据库,仍然不清楚如何符合指南?
答案 0 :(得分:0)
为种子数据使用单独的持久性存储。仅备份已由用户修改的种子车。
这真的很容易做到。请看一下WWDC 2013最近的苹果示例。这种情况是Apple发明NSPersistentStoreCoordinator
的原因。
您可以引入另一个属性来指示某个条目是否为“种子”(您在编辑后将其设置为false并将其复制到另一个商店)。