ios - 为什么在使用 NSMutableDictionary 时出现 NSConcreteMutableData 错误

标签 ios objective-c nsmutabledictionary

在我的 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/

相关文章:

ios - 由于尝试写入我认为是可变字典的内容,当我重新进入 TableViewController 时崩溃

ios - 有什么方法可以检索 iPhone 的显示亮度和光传感器值?

ios - 无法使用 Apple 的 ZoomingPDFViewer 库获得缩放效果

ios - 过滤/搜索 NSMutableDictionary

objective-c - 可变副本与其他创建方式的区别

ios - 将char数组转换为NSString对象的方式,最后一个字符多一个

ios - 任何iOS应用程序启动时首先调用哪个方法和函数?

ios - Realm :更新对象而不更新列表

ios - 无法在 IIS 7 中的 iOS 7 上部署应用程序

objective-c - 简单的一个 : in obj-c, 相当于 C# 的 .ToString() 方法吗?