J'ai trouvé une alternative, avant de sauvegarder, j'encode l'objet racine ( NSArray
objet) 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 NSKeyedUnarchiver
pour le reconvertir NSData
en objet.
C'est un peu encombrant, car j'ai besoin de convertir vers / depuis NSData
chaque 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.