2

Dans le développement de ma première application iPhone sérieuse (ce qui veut dire que je voudrais la sortir sur l'AppStore), j'avais besoin d'un bon moyen de représenter mes données. Au lieu d'aller avec des données de base, je (bêtement, je pense) a décidé d'utiliser des classes pour représenter mes données. J'ai créé trois classes, MMDot, MMShowMovement et MMShow. Le MMShowMovement contient des instances de la classe MMDot dans un tableau, car MMShow contient des instances de MMShowMovement. Cela semblait être une bonne façon de le faire, chaque classe a beaucoup de logique à suivre, donc j'ai pensé que les classes semblaient être un bon moyen de représenter toutes ces données.Persistance des données dans les applications iPhone

Ma question est, est-il un moyen facile de sauvegarder les instances de ces classes afin que je puisse restaurer les données après la réouverture de l'application? J'ai fait des applications sur OS X en utilisant un NSKeyedArchiver, serait-il similaire sur l'iPhone? Serait-il plus facile de recommencer à utiliser Core Data (ces objets sont très complexes, en particulier MMDot avec environ 15 variables d'instance, maintenant que je le regarde, peut-être pas si complexe)?

Je suis vraiment perdue ici.

+1

Je re-modèle à utiliser CoreData –

Répondre

2

Vous pouvez absolument utiliser NSKeyedArchiver pour conserver vos objets. Je suis fan de l'une ou l'autre méthode, la décision dépend surtout de vos besoins. Je ne pense pas qu'il faille beaucoup de travail pour re-modéliser vos objets dans CoreData. Sans rien connaître de votre application, je dirais que si vous faites de la simple persistance avec un modèle simple, vous n'avez pas besoin de données de base, si vous avez des relations complexes et que vous lisez/persistez fréquemment pendant une session d'application. aller.

+1

certainement d'accord avec cette évaluation - clé archivage et désarchivage est pris en charge sur l'iPhone, donc si vous avez des objets relativement simples et sont familiers avec l'architecture, allez-y. D'un autre côté, Core Data * peut être très utile pour les relations d'objet - il offre également un tas d'autres avantages (voir http://stackoverflow.com/questions/1883879/why-should-i-use-core-data -pour-mon-iphone-app/1883957 # 1883957) – Tim

+0

MMDot a environ 15 attributs, la plupart étant NSIntegers et NSStrings, les classes MMShow et MMShowMovement ont environ trois attributs chacun. MMShowMovement contiendra entre 40 et 100 instances de MMDot, et MMShow contiendra environ 4 instances de MMShowMovement. La seule relation entre les classes est que MMDot a un attribut "counts", et MMShowMovement conservera un NSInteger du nombre total de comptages. Je pense que je vais essayer d'utiliser l'archivage. Si ça a l'air d'être trop lent. Je vais passer à Core Data. –

0

Si vous avez beaucoup d'instances d'objets, il vaut probablement mieux utiliser les données de base - cela va aider à mettre en cache des choses, vous aider avec des requêtes pour obtenir des ensembles spécifiques d'objets, et ainsi de suite. KeyArchiving est vraiment beaucoup plus utile si vous enregistrez une poignée d'instances, mais avez quelques inconvénients - en particulier, il est plus difficile de traquer les fuites de mémoire à partir d'objets Unarchived. Les données de base peuvent aussi faire des paginations de résultats pour vous aussi, de sorte que vous n'allez pas chercher dans le contenu d'une grande rangée si vous n'en avez pas besoin.

Questions connexes