Ho scoperto un'alternativa, prima di salvare, ho codificato l'oggetto root ( NSArrayoggetto) utilizzando NSKeyedArchiver, che termina con NSData. Quindi utilizzare UserDefaults salvare il NSData.
Quando ho bisogno dei dati, leggo NSDatae uso NSKeyedUnarchiverper riconvertire NSDatal'oggetto.
È un po 'ingombrante, perché devo convertirlo in / da NSDataogni volta, ma funziona.
Ecco un esempio per richiesta:
Salva:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *arr = ... ; // set value
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr];
[defaults setObject:data forKey:@"theKey"];
[defaults synchronize];
Caricare:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:@"theKey"];
NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithData:data];
L'elemento nella matrice implementa
@interface CommentItem : NSObject<NSCoding> {
NSString *value;
}
Quindi, nell'implementazione di CommentItem, fornisce due metodi:
-(void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:value forKey:@"Value"];
}
-(id)initWithCoder:(NSCoder *)decoder
{
self.value = [decoder decodeObjectForKey:@"Value"];
return self;
}
Qualcuno ha una soluzione migliore?
Grazie a tutti.