Neden iPhone SDK NSMutableDictionary kaydedilemedi NSUserDefaults?
NSUserDefaults
NSMutableDictionary
bir nesneyi kaydetmek istiyorum. NSMutableDictionary
anahtar türü NSString
, nesne listesi içeren NSArray
, NSCoding
uygulayan değeri yazın. Belgeye göre NSString
NSArray
NSCoding
ile uyumludur.
Bu hata alıyorum:
[NSUserDefaults setObject: forKey:]: olmayan özellik değeri eklemek bu seçeneği deneyin.... sınıf NSCFDictionary.
Bunun için herhangi bir çözüm?
CEVAP
Bir alternatif, kaydetmeden önce, kök nesnesi (NSArray
nesne) NSData
ile biten NSKeyedArchiver
, kullanarak kodlamak öğrendim. Sonra NSData
Kaydet UserDefaults kullanın.
Verileri ihtiyacım olduğunda, ** 17 NSKeyedUnarchiver
NSData
Nesne dönüştürme okudum.
NSData
/Her dönüştürmek istiyorum çünkü biraz hantal, ama çok işe yarıyor.
Burada istek başına bir örnek:
Kaydet:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *arr = ... ; // set value
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr];
[defaults setObject:data forKey:@"theKey"];
Yük:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:@"theKey"];
NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithData:data];
Dizideki eleman uygular
@interface CommentItem : NSObject<NSCoding> {
NSString *value;
}
Sonra CommentItem
, uygulanmasını sağlar iki yöntem:
-(void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:value forKey:@"Value"];
}
-(id)initWithCoder:(NSCoder *)decoder
{
self.value = [decoder decodeObjectForKey:@"Value"];
return self;
}
Herkes daha iyi bir çözüm var mı?
Herkese teşekkürler.
iPad/çift tıklayarak bir bağlantı hove...
iPhone Y CSS animasyonlar neden flicke...
iPhone UİNavigation Sorunu - animasyon...
Neden NSUserDefaults değerlerimi tasar...
Android iPhone benzer NSUserDefaults...