Où dois-je stocker la database SQLite pour mon application iPhone?

J'ai plusieurs applications iOS sur le marché et dans chacun d'entre eux, j'ai un petit file de database SQLite connecté à l'application pour fournir à l'user mes données. Une fois installé, l'user personnalise cette database en modifiant certaines options.

Jusqu'à présent, toutes ces applications stockent la database dans NSDocumentsDirectory . Après avoir envoyé ma dernière mise à jour, il a été rejeté pour avoir stocké des données au mauvais endroit. Pour les applications rejetées, j'ai changé l'location de stockage en NSCachesDirectory . J'ai maintenant peur que le cache soit effacé et efface les personnalisations des users. L'application fonctionnerait toujours, la database serait recréée, mais toutes les tables modifiées seraient réinitialisées, ce qui bouleverserait les users.

Où ce type de file de database devrait-il être stocké? Avais-je raison de le mettre dans le dossier Docs? Selon Apple, le directory Docs est pour "Données critiques" qui est soit des données générées par l'user ou des données nécessaires au bon fonctionnement de l'application. Je pense que cela relève de cette catégorie, la persistance de mes parameters d'users est un bon fonctionnement, mais qui veut attendre un appel?

Le guide de programmation du système de files d'Apple pour iOS décrit le path (directory_accueil_application (application_home)/Library comme un location pour "créer des sous-directorys personnalisés pour les files que vous voulez sauvegarder mais qui ne sont pas exposés à l'user". Le path d'access (application_home)/Documents est décrit comme "le contenu de ce directory peut être mis à la disposition de l'user via le partage de files".

Vos bases de données ne ressemblent pas à des documents, elles ressemblent à des caches privés que les users ne devraient pas connaître. Je vous recommand de créer un directory tel que (application_home)/Library/Database et y save des files. Le path du cache que vous mentionnez ne semble pas être la meilleure option pour moi.

Vous devriez vraiment revoir le guide complet de programmation du système de files pour iOS avant de soumettre une autre application.

Si votre database contient effectivement du contenu généré par l'user, le directory Documents est son location approprié.

Cependant, vous mentionnez que vous persistez "les parameters de vos users" … Si datatables que vous persistez s'apparentent davantage à des parameters ou des preferences, elles doivent se find dans le sous-système Valeurs par défaut. Voir la documentation pour NSUserDefaults .