Swift 3'Any'类型的值没有会员'对象' [英] Swift 3 Value of type 'Any?' has no member 'object'

查看:280
本文介绍了Swift 3'Any'类型的值没有会员'对象'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have updated swift 3 and I found many errors. This is one of them :


Any?类型的值没有成员'object'

Value of type 'Any?' has no member 'object'

这是我的代码:

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() 
                        }

新错误更新:


可选链无效,表达式已经产生'任何?'

Optional chain has no effect, expression already produces 'Any?'


无法调用非函数类型的值'Any?!'

Cannot call value of non-function type 'Any?!'

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

It works well in previous version 7.3.1 swift 2.

这是json响应:

{
 "meta":{"status":200,"msg":"OK"},
        "response":[""],
        "total_data":0
}


推荐答案

与Swift 2不同,Swift 3将Objective-C的 id 导入 Any?而不是 AnyObject?(参见这个 Swift evolution proposal)。要修复错误,您需要将所有变量强制转换为 AnyObject 。这可能如下所示:

Unlike Swift 2, Swift 3 imports Objective-C's id as Any? instead of AnyObject? (see this Swift evolution proposal). To fix your error, you need to cast all of your variables to AnyObject. This may look something like the following:

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() 
    }
}

这篇关于Swift 3'Any'类型的值没有会员'对象'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆