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

  • Candyrat Records

    Candyrat Rec

    10 Mayıs 2006
  • chrmoe

    chrmoe

    7 Kasım 2006
  • RawBrahs

    RawBrahs

    28 Aralık 2010