2017-06-01 56 views
-4

我有問題沒有下標構件。
這裏是我的SWIFT 2.3鍵入任何?具有與來自2.3的碼轉換爲迅速3.0在迅速3

var RequestDict = [String: AnyObject]() 

func API() { 
self.RequestDict = result["rows"]![0]["value"] as! [String: AnyObject] 

} 

這段代碼在SWIFT 2.3,但3.0的顯示錯誤做工精細代碼。

類型任何?沒有下標成員。

+0

爲什麼你對這個問題給出否定的點?請解釋一下。 –

+0

你應該包括在您初始化你的'result'對象的代碼。然而,即使不知道result'應該是什麼類型',我敢肯定你是不是鑄造'結果[「行」]'到合適的類型,但保持它'Any',這的確沒有標成員。 –

+1

請[上的錯誤搜索(https://stackoverflow.com/search?q=%5Bswift%5D+Type+Any+has+no+subscript+members)發佈之前。這已經被回答了很多次。 – rmaddy

回答

0

早些時候SWIFT 2.3result["rows"]![0]代碼沒有錯誤很容易編譯。但事情在迅速3已經改變,因爲所得到的被轉化爲Any類型和Any類型沒有下標成員。

result["rows"]Array被第一類型強制轉換,然後從該陣列可以訪問哪些需要在其中收到的類型被進一步類型強制轉換的第0個元素

如果你想在上面的代碼像以前一樣工作,那麼你可以使用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