web-dev-qa-db-fra.com

Pourquoi devrais-je utiliser Core Data pour mon application iPhone?

Je travaille sur ma deuxième application iPhone et je suis curieux de connaître Core Data. Le temps consacré au projet est limité, de même que mon temps total. 

Je suis le seul développeur et j'ai le sentiment que Core Data serait utile, mais je ne peux pas expliquer clairement pourquoi.

S'il vous plaît excuser l'obscurcissement suivant .. l'application doit récupérer une liste de foos à partir d'un serveur central. Les utilisateurs peuvent ensuite ajouter une barre, à partir d'une liste de barres, aux foos, puis ajouter un baz à partir d'une liste de bazes (!?), puis ajouter une photo et une description facultatives à la baz.

Une fois que l'utilisateur est satisfait de son travail, il appuie ensuite sur un bouton de synchronisation pour télécharger ses données sur le serveur central.

Comme vous pouvez le constater, il s’agit d’une simple application d’exploration pilotée par les données, mais je ne suis toujours pas sûre de pouvoir justifier l’utilisation de Core Data avec des contraintes de temps. 

Si mon patron pense que nous devrions utiliser Core Data, quels points de balle puis-je lui tirer dessus? Les grenades logiques sont également appréciées.

44
Nicholas Gresham

Les données de base aideront principalement aux aspects auxiliaires de l’application, comme la persistance des données, la présentation, etc. Quelques points essentiels pour votre patron:

  • Core Data gère les fonctionnalités de sauvegarde et d'annulation pour vous. Il a un magasin persistant, qui suit les changements, et peut être vidé sur le disque automatiquement à tout moment (fermeture de l'application, etc.). 
  • Les données de base et les classes associées fournissent des moyens simples d'obtenir vos entités dans UITableViews, comme NSFetchedResultsController.
  • Core Data résume une grande partie des problèmes que vous auriez autrement à traiter, tels que des listes d'objets, des relations un à plusieurs ou plusieurs à plusieurs, ou des contraintes sur les attributs d'objet, en un seul fichier Nice interface orientée objet.
  • Core Data est fourni avec un bel éditeur de modèle d’objet graphique qui peut vous aider à concevoir votre conception d’objet/entité et à l’affiner au fur et à mesure. (Il prend également en charge la migration. Par conséquent, si vous décidez plus tard de définir différents attributs pour vos entités, vous pouvez le faire relativement facilement.)

Certes, la courbe d’apprentissage est peut-être un peu raide, mais les exemples d’Apple sont parfaits pour commencer, et la documentation Core Data est très complète et utile. Une fois que vous avez défini les données de base, ce sera un jeu d'enfant de créer votre application.

56
Tim

Pour tirer parti de CoreData, vous devez connaître un nombre suffisant de technologies, de concepts et de modèles Cocoa. La courbe d'apprentissage n'est pas vraiment raide si vous connaissez ces choses. Si cela semble raide, j’éviterais de le rendre critique pour votre projet, puis d’apprendre pendant les temps morts, et finalement de l’utiliser une fois que vous êtes à l’aise. Ce n'est certainement pas une technologie de débutant; vous aurez besoin d'une bonne base de programmation, y compris de technologies et de concepts spécifiques à Cocoa. Beaucoup de gens le voient et pensent que ce sera facile pour eux, parce qu'ils le pourraient, pourrait en obtenir beaucoup gratuitement. C'est comme un générateur de code, quasiment inutile pour quelqu'un qui l'utilise pour faire cela (produire du code), plutôt que de l'utiliser de manière habile en réponse à l'ensemble des problèmes.

7
justin

En ce qui concerne la courbe d'apprentissage, je ne pense pas que ce soit aussi grave que vous le pensez. À l'aide des exemples de classes et du modèle de projet CoreData par défaut d'Apple, j'ai pu installer une application CoreData (assez simple, mais non triviale) opérationnelle en un seul après-midi. vraiment une bonne compréhension de ce que toutes les pièces mobiles étaient (tout en développant le reste de l'application, donc pas de temps perdu en bricolage).

CoreData fonctionne très ... logiquement, je suppose, et c'est incroyablement pratique. Cela vous évite beaucoup de frais généraux et je sais que cela m'a certainement fait gagner beaucoup de temps à l'écriture de cette application. Le court investissement initial dans l’apprentissage de la nouvelle technologie en valait la peine à long terme, maintenant que j’ai un outil aussi puissant dans mon étui.

6
Ian Henry

Je suis toujours dans la plage de connaissances X-Code 101, mais la première application que j'ai créée sur mes propres données de base utilisées (après avoir lu un bon tutoriel). 

Un grand nombre de logiciels standard sont déjà écrits dans le modèle d'application vide, mais l'interaction réelle entre le programmeur et les fonctionnalités de la base de données est minimale et directe. 

Essayez, c'est plus facile que vous ne le pensez.

3
John R Doner

Un objet géré Core Data peut avoir toutes ses données sauvegardées dans une base de données et est référencé uniquement en tant qu'ID en mémoire. Ainsi, Core Data peut économiser beaucoup de mémoire, en particulier lorsque vous avez beaucoup de données de modèle. Une fois que vous utilisez Core Data, vous n'avez même plus besoin de vous inquiéter des problèmes de mémoire de données de modèle.

2
jack

Vous disposez de deux options différentes pour un magasin local persistant, mais vous devez quand même en utiliser une, alors pourquoi ne pas utiliser Core Data?

En ce qui concerne la courbe d'apprentissage, il y a des applications dans les exemples qui vous aideront ici. C'est assez simple une fois que vous parcourez les échantillons.

-t

1
Tim

Les autres réponses ici expliquent bien pourquoi vous pouvez utiliser des données de base, mais comme sa courbe d’apprentissage semble être une préoccupation commune, il serait peut-être utile pour ceux qui trébuchent sur cette question de savoir qu’il existe une alternative avec un courbe d'apprentissage "moins raide": Royaume .

Voici un bref article sur Quora expliquant pourquoi vous pourriez envisager de créer un royaume sur des données de base: https://www.quora.com/Why-would-you-use-Realm-over-Core-Data

0
kcstricks