Je travaille sur une application soutenue par Core Data. À l'heure actuelle, je sauvegarde le contexte d'objet au fur et à mesure que j'ajoute ou supprime une entité vers et depuis le contexte. J'ai peur que ça affecte la performance, donc je pensais retarder la sauvegarde. En fait, je pourrais le retarder jusqu'à ce que l'application se termine. Est-ce trop risqué d'enregistrer les données uniquement lorsque l'application est sur le point de fermer? À quelle fréquence devrais-je appeler la sauvegarde sur Object Context?À quelle fréquence devrais-je enregistrer les données de base?
Je pensais avoir un thread séparé gérer l'enregistrement: il attendra sur un sémaphore. Chaque fois qu'une partie de l'application appelle une méthode helper/util pour enregistrer les données de base, elle décrémente le sémaphore. Quand il est à zéro, le "fil de sauvegarde" fera une sauvegarde une fois et il incrémentera le sémaphore à, par exemple, 5, puis se remettra en veille.
Toute bonne recommandation? Merci!
Merci pour la réponse rapide. Mes objets ne sont pas énormes, mais l'objet est un peu compliqué. Le magasin sous-jacent est SQLite, donc comme vous l'avez dit, ça devrait être plutôt bien. J'ai récemment rencontré un problème supplémentaire: je crée un objet entité dans le contexte et je l'enregistre. Dans un bref instant, si je supprime cette entité (récupérée plus tard en utilisant FetchedResultsController), j'obtiendrai une erreur qui a quelque chose à voir avec la cohérence interne. Je pense que c'est parce que le contexte n'a pas mis à jour le graphe d'objet en mémoire? – Justin
J'ajouterais à cela que vous voulez que votre fréquence de sauvegarde réelle soit une variable ou un '# define' de sorte qu'une fois que vous êtes en test, vous pouvez affiner votre fréquence de sauvegarde et regarder les résultats dans Instruments. –