pmf*_*pmf 9 cocoa nsdictionary ios
尝试从NSMutableDictionary中删除对象后,我收到异常.相关代码如下.'settings'被传递给方法,可以是NSDictionary或NSMutableDictionary.
NSMutableDictionary *mutableSettings = nil;
if ([settings isKindOfClass:[NSMutableDictionary class]])
mutableSettings = (NSMutableDictionary *)settings;
else
mutableSettings = [[[NSMutableDictionary alloc] initWithDictionary:settings] autorelease];
[mutableSettings removeObjectForKey:@"akey"];
Run Code Online (Sandbox Code Playgroud)
这与崩溃
*由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因:' - [__ NSCFDictionary removeObjectForKey:]:发送到immutable对象的mutating方法'
这有什么不对吗?谢谢.
mtt*_*trb 10
这里的问题是,由于它是一个类集群,因此它们都返回NSDictionary并NSMutableDictionary返回.__NSCFDictionaryclassNSDictionary
我想你只需要制作一本可变的settings字典副本,无论它是否可变.
NSMutableDictionary *mutableSettings = [settings mutableCopy];
Run Code Online (Sandbox Code Playgroud)