2016-09-15 56 views
4

我更新了swift 3,並且發現了很多錯誤。這是其中之一:Swift 3類型'Any?'的值?沒有會員'object'

類型'Any?'的值沒有成員 '對象'

這是我的代碼:

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

新的錯誤更新:

可選鏈沒有任何影響,表現已經產生了 '否?'

而且

不能調用非功能型的價值「任何?」

它運作良好,在以前的版本7.3.1迅速2.

這是JSON響應:

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

請向我們展示您的json響應? –

+0

查看更新的問題@NiravD – stevengbu

+0

我已經告訴過你給我們展示你的json響應,以便我們可以在此基礎上創建字典。 –

回答

15

與Swift 2不同,Swift 3導入Objective-C的id作爲Any?而不是AnyObject?(請參見this Swift演進建議)。要解決您的錯誤,您需要將所有變量轉換爲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() 
    } 
} 
+0

我改變後,我得到了第一個錯誤:值的類型'任何?沒有會員'object' – stevengbu

+0

@stevengbu你能告訴我你的更新代碼嗎?確保你正在訪問'response'而不是'responseObject' – kabiroberai

+0

@stevengbu我剛剛編輯了我的答案,你可能想嘗試一下新代碼 – kabiroberai

0

responseObjectOptional(具體地說,Any?),所以你必須解開它爲了調用它的方法或訪問它的屬性,如responseObject?.object(forKey: "meta")等。在框架中有幾個地方的值曾經是非Optional現在Optional,特別是在Obje中使用它們的地方沒有指定可空性限定符的ctive-C。

+0

看到更新的問題,謝謝 – stevengbu

相關問題