Xcode Swift - 任何不能转换为NSDictionary的

时间:2017-04-22 20:29:23

标签: ios swift xcode nsdictionary anyobject

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

1 个答案:

答案 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。 如果您经常使用它,请转换为对象或结构。每次都节省了铸造的麻烦