我知道我回答这个问题太晚了,一个答案已经被接受,但仍然可以帮助某人。
有时将 swift 字典([String : String] 或 [AnyHashable : String] 或任何其他)转换为 Objective-C NSMutableDictionary,如果其中有一些嵌套对象(如数组或字典)在更新值将得到[NSDictionaryI setObject:forKey:]: unrecognised selector sent to instance的错误
为了防止这个错误,可以转换objective-c类中的对象。
在我的情况下,我将 JSON 字符串转换为 swift 字典,并根据我的核心要求将其转换为 NSMutableDictionary 并将其传递给目标 c 类。当我尝试更新 Objective C 类中的 NSMutableDictionary 时,这给了我一个上述错误。
在浏览并尝试了很多之后,我发现如果我尝试在 Objective-C 类本身的 NSMutableDictionary 中转换我的 JSON 字符串,那么它对我有用。
所以试试这个:在 aVC.swift 中
let Str: String = nsmanagedobject.value(forKey: "<key>") as? String {
if let mutableDict: NSMutableDictionary = ApplicationData.convertJsonObject(fromJsonString: Str) as? NSMutableDictionary {
......
<Your code to pass NSMutableDictionary to respected Objective-C class>
......
}
ApplicationData.h
+ (NSObject *)convertJsonObjectFromJsonString:(NSString *)jsonString;
ApplicationData.m
+ (NSObject *)convertJsonObjectFromJsonString:(NSString *)jsonString {
NSObject *jsonObject = nil;
if ([jsonString length] > 0) {
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
if (jsonData) {
jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil];
}
}
NSLog(@"jsonObject: %@",jsonObject);
return jsonObject;
}
我希望这会帮助某人并节省一些时间。