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

  • MisterBrightside

    MisterBright

    24 Mart 2006
  • Muse

    Muse

    28 EYLÜL 2006
  • William Sledd

    William Sled

    24 EYLÜL 2006