let orderID = (responceDictionary as NSDictionary).value(forKeyPath: "result.id") as? String
错误: '[AnyHashable:Any]?'不能转换为'NSDictionary'
我不完全确定如何从Any投射 - > NSDictionary但作为一个字符串,似乎在我尝试的内容中抛出错误。
let orderID = (responceDictionary as! NSDictionary).value(forKeyPath: "result.id") as? String
以上编译但使用此方法会抛出另一个错误:将永远失败。
Moltin.sharedInstance().cart.order(withParameters: orderParameters, success: { (responceDictionary) in
let orderID = (responceDictionary as NSDictionary).value(forKeyPath: "result.id") as? String
答案 0 :(得分:0)
[any hashable:any]不是NSDictionary。在第二个变种中,你保证它是可浇铸的,但它不会因此而崩溃。
忽略NSDictionary。知道从Obj-C来的时候感觉很难。 个人我最近用过这个:
let jsonDictionary = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.allowFragments) as! Dictionary<String, Any>
let conversationID = jsonDictionary["conversationId"] as! String?
conversationID将是一个可选的String。 如果您经常使用它,请转换为对象或结构。每次都节省了铸造的麻烦