coredata sqlite位置,库/应用程序支持和iCloud

时间:2013-07-31 15:51:26

标签: ios core-data ios6 icloud

我们最近在审核过程中因以下问题遭到拒绝:

==========

  

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/

https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/PerformanceTuning/PerformanceTuning.html%23//apple_ref/doc/uid/TP40007072-CH8-SW8

阅读完这些内容后,如果我们有一个需要备份但必须从预加载的用户可修改/可删除项目开始的数据库,仍然不清楚如何符合指南?

1 个答案:

答案 0 :(得分:0)

为种子数据使用单独的持久性存储。仅备份已由用户修改的种子车。

这真的很容易做到。请看一下WWDC 2013最近的苹果示例。这种情况是Apple发明NSPersistentStoreCoordinator的原因。

您可以引入另一个属性来指示某个条目是否为“种子”(您在编辑后将其设置为false并将其复制到另一个商店)。