我有问题从2.3转换为Swift 3.0。
这是Swift 2.3
var RequestDict = [String: AnyObject]()
func API() {
self.RequestDict = result["rows"]![0]["value"] as! [String: AnyObject]
}
此代码在Swift 2.3中正常工作,但是3.0显示错误。
键入?!没有下标成员。
早些时候, swift 2.3 result["rows"]![0]
中的代码很容易编译而没有错误。但是,由于结果转换为Any
类型,并且Any
类型没有订阅成员。
result["rows"]
应首先在Array
中打字,然后从该数组中您可以访问 0th element ,该元素需要在您接收的类型中进一步类型。
如果您希望上述代码像以前一样工作,则可以使用SwiftyJSON
,可以将结果转换为JSON
对象
假设您的结果是一个对象,该对象的数组在内部被称为行。
let dictionary = result as! [String:AnyObject]
let yourResultInJSON = JSON(rawValue: dictionary)
然后,您可以轻松地使用此行yourResultInJSON["rows"]![0]["value"]
,这也将是一个新的JSON
对象,您可以在其中获取所需的密钥值,例如:
let finalValue = yourResultInJSON["rows"]![0]["value"]
let someValue = finalValue["yourKey"].stringValue //or intValue or whatever you need to typecast