Question

J'ai une petite application iPhone qui stocke une liste d'objets. L'utilisateur peut ajouter et supprimer des objets, mais cette liste demeure assez faible (la plupart des utilisateurs ont 10-30 objets). NSUserDefaults semble beaucoup plus facile de travailler avec, mais sqlite3 plus rapide? Avec seulement 30 « enregistrements » il y aura une différence notable?

Était-ce utile?

La solution

NSUserDefaults est pour les préférences des utilisateurs, des objets généralement de base comme NSString ou NSNumber. SQLite, sérialisation une collection d'objets dans une liste de propriétés, ou les données de base sont toutes les options valides pour le stockage de données utilisateur telles que le modèle que vous les objets créés.

Tu ne vas pas voir une différence de vitesse, mais il est toujours préférable de choisir le mécanisme approprié pour ce que vous faites. Si c'est juste préférences puis utilisez NSUserDefaults, sinon je sérialiser vos objets à un plist. Si vous êtes nouveau à Cocoa j'éviter que des données de base et même SQLite d'abord, pour vous donner une chance d'apprendre les rudiments d'abord.

Autres conseils

Essayez avec protocole NSCoding. Déclarez votre classe pour mettre en œuvre le protocole NSCoding:

@interface Person : NSObject <NSCoding>

Ligne précédente promet de mettre en œuvre les méthodes suivantes:

-(id)initWithCoder:(NSCoder *)coder;
-(void)encodeWithCoder:(NSCoder *)coder;

Vos méthodes devraient ressembler à:

-(void)encodeWithCoder:(NSCoder *)coder {
  [super encodeWithCoder:coder];
  [coder encodeObject:firstName forKey:@"firstName"];
  [coder encodeObject:lastName forKey:@"lastName"];
}

-(id)initWithCoder:(NSCoder *)coder {
  [super init];
  firstName = [[coder decodeObjectForKey:@"firstName"] retain];
  lastName = [[coder decodeObjectForKey:@"lastName"] retain];
  return self;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top