web-dev-qa-db-fra.com

Utiliser Core Data ou SQLite sur iPhone?

Depuis que CoreData est devenu disponible pour l'iPhone dans OS 3.0, est-il censé être la réponse à la persistance des données et remplacer tout besoin de SQLite direct?

Quelles raisons existent pour continuer à utiliser SQLite? Quels sont les avantages/inconvénients de SQLite par rapport à CoreData?

55
Hauke

C'est une question courante ici:

En résumé, Core Data peut grandement simplifier votre code, en particulier pour les modèles d'objets complexes. Vous obtenez un support annuler/rétablir presque gratuitement avec lui. Il fournit également des avantages très importants performances , en particulier sur l'iPhone. Même si cela semble contre-intuitif, compte tenu de la surcharge que vous pensez du framework, dans la plupart des cas, vous pouvez battre les performances de SQLite réglé à la main à l'aide de Core Data. Sur l'iPhone, il fait un excellent travail de récupération par lots pour minimiser l'utilisation de la mémoire.

Le seul inconvénient, comme indiqué, est que cela vous limite en exigeant l'iPhone OS 3.0 pour vos utilisateurs finaux. Cependant, cela n'a pas été un problème du tout pour mes utilisateurs, et n'en deviendra que moins à l'avenir.

61
Brad Larson

Cela pourrait être un avantage moindre, mais SQLite est beaucoup plus portable entre les plates-formes, car Core Data fait partie de Cocoa et SQLite est pur C. Cela signifie que si vous vouliez porter votre application sur PC, par exemple, vous auriez moins de code à réécrire dans le cas où vous utilisez SQLite pur.

Ensuite, si vous vouliez développer autre chose sur plusieurs plates-formes à l'aide d'une base de données locale (pas nécessairement liée à des applications iPhone), vous auriez déjà une certaine expérience avec SQLite.

11
Mark Rushakoff

Si vous souhaitez que votre application s'exécute sur des iPhones ne fonctionnant pas sur OS 3.0, vous devrez utiliser SQLite.

Cependant, l'utilisation de CoreData (qui utilise SQLite comme backend, je pense) signifie que vous n'avez pas à écrire votre propre code d'interaction avec la base de données, ce qui est assez compliqué à faire, surtout lorsque vous faites des relations, etc.

J'utilise CoreData moi-même ...

2
Pieter Jongsma