【发布时间】:2011-09-19 23:59:52
【问题描述】:
我想对 NSMutableDictionary 对象使用仅适用于 NSDictionary 的方法 (writeToFile)。那么,如何将这个 NSMutableDictionary 对象转换为 NSDictionary?
【问题讨论】:
标签: iphone ios ios4 nsdictionary nsmutabledictionary
我想对 NSMutableDictionary 对象使用仅适用于 NSDictionary 的方法 (writeToFile)。那么,如何将这个 NSMutableDictionary 对象转换为 NSDictionary?
【问题讨论】:
标签: iphone ios ios4 nsdictionary nsmutabledictionary
NSMutableDictionary 继承自 NSDictionary。所以,writeToFile 应该对两个类都可用。
【讨论】:
对于那些真正想要从 NSMutableDictionary 转换为 NSDictionary 的人:
NSMutableDictionary *mutableDict = [[[NSDictionary alloc] initWithObjectsAndKeys:
@"value", @"key"] mutableCopy];
NSDictionary *dict = [NSDictionary dictionaryWithDictionary:mutableDict]; //there you have it
【讨论】:
NSMutableDictionary 是 NSDictionary 的子类,因此 writeToFile 方法应该可用于您的对象,而无需进行任何转换或转换。
【讨论】:
这里已经讨论过:
How to save a NSMutableDictionary into a file in documents?
你不需要转换它。
但如果你真的想要,只需在NSMutableDictionary 上使用copy 方法或在NSDictionary 上使用dictionaryWithDictionary: 方法。两者都提供来自NSMutableDictionary 的NSDictionary。
【讨论】:
A NSMutableDictionary 是 NSDictionary 因为它是一个子类。通常,子类与其超类的关系称为:“is a”。
【讨论】:
要解决实际问题的标题而不是内容(因为我搜索了这个 Q),您实际上可以依靠 copyWithZone: 来获取不可变字典。
NSMutableDictionary *mutableDict = [[NSMutableDictionary alloc] init];
mutableDict[@"key"] = @"value";
NSDictionary *immutableDict = [mutableDict copy];
【讨论】: