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

Je travaille sur mon application iPhone 2nd et je suis curieux de connaître les données de base. Le temps sur le projet est limité, tout comme mon temps global.

Je suis le seul dev et j'ai le sentiment que les données de base seraient utiles mais je ne peux pas expliquer clairement pourquoi.

Veuillez 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(!?) à la barre, puis ajoutez quelques options photo et description du baz.

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

Comme vous pouvez le voir, c'est une simple application drill down pilotée par les données, mais je ne suis toujours pas sûr de pouvoir justifier l'utilisation de données de base avec nos contraintes de temps - la courbe d'apprentissage semble raide.

Si vous dites à mon patron que nous devrions utiliser des données de base, quels points de balle puis-je lui tirer dessus? Les grenades logiques sont également apprécier.

44
demandé sur Nicholas Gresham 2009-12-10 23:42:47

7 réponses

Les données de base aideront principalement dans les facettes auxiliaires de l'application - des choses comme la persistance des données, la présentation, etc. Quelques points à puces 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 à un certain nombre de fois (app fermer, etc.).
  • les données de base et les classes associées fournissent des moyens faciles d'obtenir vos entités dans UITableViews, comme NSFetchedResultsController.
  • les données de base résument beaucoup de choses désordonnées que vous auriez autrement à gérer vous-même, telles que des listes d'objets, des relations un à plusieurs ou plusieurs à plusieurs, ou des contraintes sur les attributs d'objet, en une seule interface orientée objet propre.
  • Core Data est livré avec un éditeur de modèle d'objet graphique qui peut vous aider à réfléchir à la conception de votre objet/entité et à l'affiner au fur et à mesure. (Il prend également en charge la migration, donc si vous décidez plus tard que vous voulez différents attributs sur vos entités, vous pouvez le faire relativement facilement.)

Bien sûr, la courbe d'apprentissage peut être un peu raide, mais les exemples Apple sont excellents pour commencer, et la documentation des données de base est très complète et utile. Une fois que vous avez des données de base vers le bas, il sera un jeu d'enfant pour construire votre application.

55
répondu Tim 2010-06-24 22:15:45

Pour tirer parti de CoreData, vous devez connaître une bonne quantité 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 d'arrêt, enfin de l'utiliser une fois que vous êtes à l'aise avec cela. Il est certainement pas une technologie débutant; vous aurez besoin d'une bonne base de programmation, y compris les technologies et les concepts spécifiques de cacao. Beaucoup de gens le voient et pense qu'il sera facile pour eux, parce qu'ils seraient, peut obtenir beaucoup gratuitement. C'est comme un générateur de code, assez proche d'inutile pour quelqu'un qui l'utilise pour faire exactement cela (baratter le code), plutôt que de l'utiliser habilement en réponse à l'ensemble de problèmes.

7
répondu justin 2009-12-10 21:08:00

En ce qui concerne la courbe d'apprentissage, Je ne pense pas que ce soit aussi mauvais que vous le pensez. En utilisant les classes d'exemple D'Apple et le modèle de projet CoreData par défaut, j'ai pu avoir une application CoreData (assez simple, mais pas triviale) en un seul après-midi, et il n'a fallu que quelques jours pour jouer avec le code avant d'avoir une très bonne compréhension de ce que toutes les pièces mobiles étaient (tout en développant

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

5
répondu Ian Henry 2009-12-11 01:08:03

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

Il y a beaucoup de logiciels standard qui sont déjà écrits dans le modèle d'application vide, mais l'interaction réelle du programmeur avec la fonctionnalité de la base de données est minime et simple.

Donnez-lui un coup de feu: c'est plus facile que vous ne le pensez.

2
répondu John R Doner 2014-01-24 17:52:55

Un objet core Data managed peut enregistrer toutes ses données dans la base de données et n'est référencé qu'en tant QU'ID en mémoire. Ainsi, les données de base peuvent économiser beaucoup de mémoire, surtout lorsque vous avez beaucoup de données de modèle. Une fois que vous utilisez les données de base, vous n'avez même plus besoin de vous soucier des problèmes de mémoire des données du modèle.

2
répondu jack 2015-01-22 13:58:15

Vous avez quelques options différentes pour un magasin local persistant, mais vous devez en utiliser une de toute façon, alors pourquoi ne pas utiliser les données de base?

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

-t

1
répondu Tim 2009-12-10 20:51:20

Autres réponses ici, faire un bon travail en expliquant pourquoi vous pouvez utiliser de base de données, mais que sa courbe d'apprentissage semble être une préoccupation commune, il pourrait être utile pour ceux qui trébuchent sur cette question, à savoir qu'il existe une alternative beaucoup moins "raide" courbe d'apprentissage: Domaine.

Voici un bref post de Quora sur les raisons pour lesquelles vous pourriez considérer Realm over Core Data: https://www.quora.com/Why-would-you-use-Realm-over-Core-Data

0
répondu kcstricks 2016-05-20 15:04:45