0

OrderedDictionaryを NSUserDefaultsに保存する必要があります。

私はここと他の多くの投稿でそれを行う方法を読みました:

-(id)initWithCoder:(NSCoder *)decoder{
     if (self != nil){
         dictionary = [decoder decodeObjectForKey:@"dictionary"];
         array = [decoder decodeObjectForKey:@"array"];
     }
    return self;
}

-(void)encodeWithCoder:(NSCoder *)encoder{
    [encoder encodeObject: dictionary forKey:@"dictionary"];
    [encoder encodeObject: array forKey:@"array"];
}

次に、次のように呼び出します。

 OrderedDictionary *od = [OrderedDictionary dictionaryWithDictionary:[businessInfo objectForKey:@"allowedStates"]];
    NSData *archivedObject = [NSKeyedArchiver archivedDataWithRootObject:od];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:archivedObject forKey:@"allowedStates"];
    [defaults synchronize];

次のように解凍します。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSData *archivedObject = [defaults objectForKey:@"allowedStates"];
    OrderedDictionary *countryStates = (OrderedDictionary *)[NSKeyedUnarchiver unarchiveObjectWithData:archivedObject];

空でarchivedObjectはありませんが、countryStates空ですが、保存すると空ではありません。

どうですか?

を正常にアーカイブするにはどうすればよいOrderedDictionaryですか?

編集済み

メソッド initWithCoder が呼び出されていますが、encodeWithCoder は呼び出されていません

4

2 に答える 2

1

以下のリンクを参照してください。適切な解決策が得られる可能性があります。

encodeWithCoder は NSMutableDictionary の派生クラスで呼び出されません

encodeWithCoder はいつ呼び出されますか?

幸運を !!!!

于 2013-07-18T11:45:38.520 に答える