在我的 appdelegate 中,我设置了几个自定义 NSObject (MemoryObject) 实例并将它们存储到 NSMutableDictionary 中:
- (void)setMObjects{
_radio = [[Memoryobject alloc]initWithName:@"Radio" andDescription:@"string" andImage:nil];
_fridge = [[Memoryobject alloc]initWithName:@"Fridge" andDescription:@"string" andImage:nil];
[_allMObjects setObject:_radio forKey:@"Radio"];
[_allMObjects setObject:_fridge forKey:@"Fridge"];
}
之后,我将它们存储到 NSUserDefaults 中:
[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:_allMObjects] forKey:@"neededMObjects"];
然后,在我的 ViewController 中,我想检索这个 NSMutableDictionary:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
neededMObjects = [[defaults objectForKey:@"neededMObjects"] mutableCopy];
NSLog(@"dict: %@", neededMObjects);
NSLog(@"object: %@", [neededMObjects objectForKey:@"neededMObjects"]);
第二个 NSLog 给我一个错误:-[NSConcreteMutableData objectForKey:]: unrecognized selector sent to instance 0x8c32330
我不明白这个。为什么错误暗示我使用了 NSConcreteMutableData,而我使用的是 NSMutableDictionary,为什么这不起作用?
最佳答案
您正在将归档字典的结果放入 NSUserDefaults。 archivedDataWithRootObject:
的结果是一个 NSData。您需要取消存档才能取回字典。
关于ios - 为什么在使用 NSMutableDictionary 时出现 NSConcreteMutableData 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24063205/