La meilleure façon de stocker et de charger une grande quantité de données dans Objective-C

Je suis en train de créer une application qui utilisera beaucoup de données, par exemple ~ 100 inputs, chacune contenant plusieurs images,> 250 mots de text et de nombreuses valeurs de 1 mot / caractère.

Je me demandais juste sur la meilleure pratique pour le faire dans l'objective c?

Par exemple, aurais-je un file de text brut qui contient toutes les valeurs et puis le lire au moment de l'exécution?

Ou aurais-je besoin de créer un object qui contient toutes ces valeurs?

Je préférerais ne pas utiliser une source web car je veux que l'application puisse fonctionner hors ligne.

Vous avez beaucoup d'options. Vous pouvez stocker datatables dans des plists, créer des objects pour eux et sérialiser dans un file, ou utiliser une database. Pour votre scénario particulier, je recommand de stocker dans une database comme sqlite.

  • Une introduction aux lists de propriété (plists)
  • Sérialisation d'object à l'aide de NSArchiver
  • L'étonnant SQLite

Une centaine d'loggings avec peut-être quelques dizaines de champs chacun n'est pas beaucoup de données. Je suggère de stocker datatables dans une list de propriétés, probablement un tableau de dictionarys. C'est à propos de la solution la plus simple, et probablement plus que suffisant pour vos besoins. Le chargement de vos données pourrait être aussi simple que:

NSArray *records = [[NSArray alloc] initWithContentsOfFile:pathToFile]; 

Chaque input dans le tableau pourrait être un dictionary avec une key pour chaque champ de l'logging. Cela vous donne beaucoup de flexibilité. Vous pouvez bien sûr accéder à chaque logging individuellement, mais vous pouvez également utiliser NSPredicate pour sélectionner des sous-sets d'loggings correspondant aux critères que vous spécifiez. Vous pouvez également utiliser le encoding de valeurs-keys avec le tableau pour get un tableau de toutes les valeurs d'une key particulière. Par exemple, si vous voulez un tableau du champ "nom" pour chaque logging, vous pouvez dire:

 NSArray *names = [records valueForKey:@"name"]; 

Il y a une place pour des solutions comme SQLite et Core Data, mais vous n'en aurez probablement pas besoin pour un si petit set de données.