J'ai trouvé une alternative, avant de sauvegarder, j'encode l'objet racine ( NSArrayobjet) en utilisant NSKeyedArchiver, qui se termine par NSData. Utilisez ensuite UserDefaults pour enregistrer le fichier NSData.
Lorsque j'ai besoin des données, je lis le NSData, et je l' utilise NSKeyedUnarchiverpour le reconvertir NSDataen objet.
C'est un peu encombrant, car j'ai besoin de convertir vers / depuis NSDatachaque fois, mais cela fonctionne.
Voici un exemple par demande:
Sauver:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *arr = ... ; // set value
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr];
[defaults setObject:data forKey:@"theKey"];
[defaults synchronize];
Charge:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:@"theKey"];
NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithData:data];
L'élément du tableau implémente
@interface CommentItem : NSObject<NSCoding> {
NSString *value;
}
Ensuite, dans la mise en œuvre de CommentItem, fournit deux méthodes:
-(void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:value forKey:@"Value"];
}
-(id)initWithCoder:(NSCoder *)decoder
{
self.value = [decoder decodeObjectForKey:@"Value"];
return self;
}
Quelqu'un a une meilleure solution?
Merci tout le monde.