web-dev-qa-db-fra.com

Meilleure bibliothèque d'enveloppement Cocoa / Objective-C pour SQLite sur iPhone

Je développe pour l'iPhone et je cherche une bonne bibliothèque Cocoa/Objective-C pour travailler avec SQLite. Je ne veux pas utiliser l'API SQLite C procédurale standard. Je vois des options sur sqlite.org sous la section Objective-C, mais je ne sais pas laquelle est la meilleure en termes de conception, de stabilité et de fonctionnalité d'API de bibliothèque. J'aimerais utiliser quelque chose qui est activement développé et qui, espérons-le, existera pendant un certain temps. Quelqu'un a-t-il des suggestions basées sur son expérience?

Merci

52
pfeilbr

J'utilise personnellement FMDB , et sa dernière mise à jour date d'hier.

48
ccgus

Le plus simple que j'ai trouvé est celui-ci https://github.com/misato/SQLiteManager4iOS

SQLiteManager par Ester Sanchez.

Son utilisation est essentiellement comme ceci:

NSArray *results = [dbManager getRowsForQuery:@"SELECT * FROM table WHERE id = 1"];

results est un tableau contenant des dictionnaires. Chaque dictionnaire est une seule ligne renvoyée où les clés sont les noms de chaque colonne du tableau.

Après cela, vous pouvez faire des choses comme ça:

NSDictionary *aPerson = [results objectAtIndex:0];
NSString *firstName = aPerson[@"firstName"];
NSString *email = aPerson[@"email"];
12
Accatyyc

Je suis également fan de FMDatabase, bien que j'aie dû en personnaliser ma propre version. Mes applications utilisent une couche autour d'elle que j'ai écrite appelée ArchDBObject qui convertit de manière transparente les objets vers et depuis une représentation de base de données; Je pense à le publier sous une forme ou une autre, mais je n'ai pas encore vraiment décidé comment.

Dans tous les cas, FMDatabase peut être disponible sur https://github.com/ccgus/fmdb .

12
Brent Royal-Gordon

FMDB est sympa car c'est le moyen le plus léger de ne pas avoir à gérer les appels C et les conversions de type, tout en vous donnant un accès complet au SQL.

Ce que je n'aime généralement pas dans les wrappers relationnels-objets, c'est que vous vous éloignez trop du SQL généré et c'est à ce moment que les performances peuvent commencer à souffrir.

J'ai passé les dernières heures à regarder les options - je n'ai pas encore été en production avec aucune d'entre elles, donc YMMV.

L'emballage le plus léger que j'ai trouvé était ici:

http://th30z.netsons.org/2008/11/objective-c-sqlite-wrapper/

Je ne sais pas s'il a un nom officiel. Il ne s'agit que d'une classe et il résume la méchanceté de l'API SQLite, tout en laissant la valeur de travailler directement avec SQL. La courbe d'apprentissage est de 5 minutes, en supposant que vous connaissez déjà SQL. Comme il est si petit, je peux imaginer qu'il serait facile de réparer tout ce qui pourrait mal tourner.

1
Vineel Shah

Si vous le souhaitez, vous pouvez également consulter le référentiel suivant qui fournit un ensemble de classes pouvant être utilisées pour créer des instructions SQL et fournit un moyen simple de gérer une connexion à une base de données SQLite. Il se trouve à https://github.com/ziminji/objective-c-sql-query-builder

1
Ziminji

J'ai un ORM simple au dessus de FDBM ici http://code.google.com/p/chibiorm/ .

Avec lui, vous pouvez utiliser du SQL brut quand vous le souhaitez, renvoyer n'importe quel SQL en tant que liste de dict, ou utiliser le style Nice OO.

0
mamcx