1
votes

We recently got rejected during the review process for the following issues:

==========

2.23

We still found that your app does not follow the iOS Data Storage Guidelines, which is required per the App Store Review Guidelines.

In particular, we found that on launch and/or content download, your app stores non user-generated content in iCloud backup directories, which is not appropriate. To check how much data your app is storing:

  • Install and launch your app
  • Go to Settings > iCloud > Storage & Backup > Manage Storage
  • If necessary, tap "Show all apps"
  • Check your app's storage

The iOS Data Storage Guidelines indicate that only content that the user creates using your app, e.g., documents, new files, edits, etc., should be backed up by iCloud.

Temporary files used by your app should only be stored in the /tmp directory; please remember to delete the files stored in this location when the user exits the app.

Data that can be recreated but must persist for proper functioning of your app - or because customers expect it to be available for offline use - should be marked with the "do not back up" attribute. For NSURL objects, add the NSURLIsExcludedFromBackupKey attribute to prevent the corresponding file from being backed up. For CFURLRef objects, use the corresponding kCFURLIsExcludedFromBackupKey attribute.

==========

Our (iOS 6 only) app holds the user's collection of favourite cars.

We would like to prepopulate this collection with a collection of classic cars which they can delete, or edit as they please from within the app. The entire databse of cars, including those which the user creates and the preloaded entries, should be backed up to iCloud.

Currently, each car, whether created by the user or one of the starting collection, is stored within /Library/Application Support/com.company.appname/DataModel.sqlite where I understand it is backed up to iCloud. The car entries have an image file which is saved in the same directory as the sqlite database file.

The cars are then presented in a tableview using a fetchedresultscontroller and standard core data code.

Here is some of the relevant documentation.

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

Having read through these, it is still unclear how to conform to the guidelines if we have a database which needs to be backed up but which must start with preloaded, user modifiable/deletable items?

1

1 Answers

0
votes

Use a separate persistent store for the seed data. Backup only seed cars that have been modified by the user.

This is really very easy to do. Just look at the recent apple examples from WWDC 2013. This scenario is the reason Apple invented the NSPersistentStoreCoordinator.

You could introduce another attribute that indicates if an entry is "seed" or not (you set this to false once it was edited and copy it over to the other store).