Ho scoperto un'alternativa, prima di salvare, ho codificato l'oggetto root ( NSArray
oggetto) utilizzando NSKeyedArchiver
, che termina con NSData
. Quindi utilizzare UserDefaults salvare il NSData
.
Quando ho bisogno dei dati, leggo NSData
e uso NSKeyedUnarchiver
per riconvertire NSData
l'oggetto.
È un po 'ingombrante, perché devo convertirlo in / da NSData
ogni 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.