SORU
23 Ocak 2009, Cuma


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
23 Ocak 2009, Cuma


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ChannelRichard

    ChannelRicha

    7 Kasım 2008
  • Eric Anthony

    Eric Anthony

    13 AĞUSTOS 2011
  • Ordetta Price

    Ordetta Pric

    12 EYLÜL 2011