Je suis en train de créer une application qui nécessite une persistance "hors ligne" de ses données qui sont exposées via un service web OData. Le service OData me donne accès à toutes les tables de la base de données sous-jacente, ainsi qu'à tous les champs de base de données pertinents tels que les ID.
De plus, j'ai déjà un schéma de base de données SQLite que je peux utiliser.
Ma question, sur laquelle j'ai déjà fait volte-face deux fois, est de savoir s'il est préférable de stocker les données du service web sur le dispositif via SQLite directement (en utilisant FMDB), ou de tirer parti de Core Data ?
Si j'utilise Core Data, je perds les avantages relationnels des clés primaires et étrangères, mais je gagne l'avantage des NSManagedObjects automatiquement imbriqués/peuplés. Je ne suis pas totalement sûr de la meilleure façon de recréer la nature relationnelle de mes objets de données.
Si j'utilise SQLite, je peux simplement insérer/mettre à jour les résultats des appels au service web, et obtenir automatiquement les relations à partir des colonnes de clés étrangères existantes. L'inconvénient est que je dois probablement encapsuler manuellement mes résultats dans des objets POCO.
Pour l'instant, mon instinct me dit SQLite, mais il semble que la communauté s'oriente massivement vers Core Data dans tous les cas. Si j'opte pour Core Data, quelle est la meilleure façon de créer et de maintenir les relations entre objets (surtout lorsqu'elles sont de type 1->many) ?
Cette application n'entrera pas dans l'App Store, si des aspects de l'Apple-happy sont en cause.