2010-06-26 6 views
3

Je voudrais utiliser une base de données Sqlite dans une application iphone. L'exemple dans le livre que je suis en train de lire a les contrôleurs qui appellent directement des objets CoreData. Venir de MVC/MVP dans .NET pour moi c'est comme ouvrir une connexion SQL dans un gestionnaire d'événements de bouton. Je disposerais généralement d'un référentiel qui gère les détails de récupération/persistance du modèle.CoreData est-il généralement utilisé comme modèle ou est-ce un détail d'implémentation de l'infrastructure?

1) Est-ce la norme d'utiliser la fonctionnalité CoreData directement dans un contrôleur? 2) Est-ce que l'extraction de mon modèle de domaine dans des classes séparées qui sont traduites dans la couche de persistance n'est pas une bonne idée sur l'iPhone (en termes de performance, mémoire, organisation de projet attendue, etc.)?

3) La création d'une couche de référentiel fonctionnera-t-elle bien sur un iPhone?

Voulez-vous profiter de l'approche Objective-C et l'arrière-plan SmallTalk MVC d'applications iPhone, je comptais tirer parti de modèles de domaine, Référentiels, IoC, etc.

Est-ce tout simplement pas réaliste? Est-ce que l'auteur et moi sommes juste sur des pages différentes? Merci pour toute contribution.

Répondre

2

Le SDK iPhone suit le modèle MVC, mais aussi beaucoup d'autres (délégué). Ce n'est peut-être pas aussi strict que les autres langues que vous avez mentionnées. Pour répondre à vos questions:

  1. Vous aurez inévitablement accès à vos modèles depuis votre contrôleur. Tant que l'implémentation de ces actions est gérée dans le modèle, vous suivez le modèle MVC. Ceci est fourni par le CoreData Framework. Donc, à la fin, c'est votre DAO, ActiveRecord, etc.

  2. Vous pouvez générer les classes Model (Model.m/h) si vous souhaitez ajouter des fonctionnalités supplémentaires. Cependant, CoreData les construit généralement à la volée.

  3. Je ne comprends pas cela sans un arrière-plan .NET, mais je pense que ma réponse à votre première question peut y avoir répondu indirectement.

Je ne peux pas parler du livre que vous lisez, mais il peut être préférable pour vous de voir quelques références supplémentaires. Consultez l'introduction aux données de base dans les documents de référence de l'ADC ainsi que l'un des exemples de projets - CoreDataBooks.

+0

Je ne pense pas gérer CRUD sur le contrôleur est comme MVC. Vous devriez gérer ceci sur le calque Modèle. Model Layer n'est pas seulement une entité –

+0

Alors que la ligne précédente n'est pas claire, je maintiens ma déclaration - * Tant que la performance de ces actions est gérée dans le modèle, alors vous suivez le modèle MVC. * –

2

Oui, les données de base sont généralement utilisées comme modèle. Si je comprends bien ce que vous dites, vous attendez une couche entre le magasin de données et le contrôleur. Core Data est cette couche - elle (parfois) est implémentée dans sqlite, de sorte que vous n'utilisez jamais réellement sqlite directement. Je pense que c'est la source de votre confusion - vous n'êtes pas censé utiliser les deux dans le même projet pour les mêmes données.

Questions connexes