输入任何?!Swift 3中没有下标成员



我有问题从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

最新更新