J'ai trouvé une alternative, avant de l'enregistrer, j'ai coder l'objet racine (NSArray objet) à l'aide de NSKeyedArchiver, qui se termine avec NSData. Ensuite, utilisez UserDefaults enregistrer le NSData.
Quand j'ai besoin de données, j'ai lu le NSData, et l'utilisation NSKeyedUnarchiver pour convertir NSData de revenir à l'objet.
Il est un peu encombrant, parce que j'ai besoin de les convertir vers/à partir de NSData à chaque fois, mais il fonctionne, tout simplement.
Voici un exemple par la demande:
Enregistrer:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *arr = ... ; // set value
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr];
[defaults setObject:data forKey:@"theKey"];
Charge:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:@"theKey"];
NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithData:data];
L'élément dans le tableau met en œuvre
@interface CommentItem : NSObject<NSCoding> {
NSString *value;
}
Ensuite, dans la mise en œuvre de CommentItem, dispose de 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 à tous.