Swift 3'Any'类型的值 没有会员'对象'

ste*_*gbu 8 ios swift swift3

我更新了swift 3,发现了很多错误.这是其中之一:

"任何?"类型的值 没有会员'对象'

这是我的代码:

jsonmanager.post( "http://myapi.com",
                      parameters: nil,
                      success: { (operation: AFHTTPRequestOperation?,responseObject: Any?) in
                        if(((responseObject? as AnyObject).object(forKey: "meta") as AnyObject).object(forKey: "status")?.intValue == 200 && responseObject?.object(forKey: "total_data")?.intValue > 0){
                            let aa: Any? = (responseObject? as AnyObject).object(forKey: "response")

                            self.data = (aa as AnyObject).mutableCopy() 
                        }
Run Code Online (Sandbox Code Playgroud)

新错误更新:

可选链没有效果,表达式已经产生'Any?'

不能调用非函数类型的值'Any?!'

它在以前的版本7.3.1 swift 2中运行良好.

这是json的回应:

{
 "meta":{"status":200,"msg":"OK"},
        "response":[""],
        "total_data":0
}
Run Code Online (Sandbox Code Playgroud)

kab*_*rai 18

与斯威夫特2,斯威夫特3进口Objective-C的id作为Any?,而不是AnyObject?(见斯威夫特演进方案).要修复错误,您需要将所有变量强制转换为AnyObject.这可能类似于以下内容:

jsonmanager.post("http://myapi.com", parameters: nil) { (operation: AFHTTPRequestOperation?, responseObject: Any?) in
    let response = responseObject as AnyObject?
    let meta = response?.object(forKey: "meta") as AnyObject?
    let status = meta?.object(forKey: "status") as AnyObject?
    let totalData = response?.object(forKey: "total_data") as AnyObject?
    if status?.intValue == 200 && totalData?.intValue != 0 {
        let aa = response?.object(forKey: "response") as AnyObject?
        self.data = aa?.mutableCopy() 
    }
}
Run Code Online (Sandbox Code Playgroud)