iT邦幫忙

0

Swift "type 'Any' has no subscript members"問題

https://ithelp.ithome.com.tw/upload/images/20180622/20108632WliNgGBZkg.png

各位大大,本人是新手,嘗試Swift代碼時出現此錯誤,求高手指教

2 個回答

0
Samと可樂快跑
iT邦研究生 2 級 ‧ 2018-06-23 11:49:20
最佳解答

你的teams是NSArray。
但除此之外就沒有告知其他的事項。
所以NSArray的內容就被視為Any
這種狀況下他根本不知道你Any中還有NSDictionary
你應該要如此宣告:

var teamJSON:[String:Any]!

以及

var teams:[[String:Any]] = teamJSON["teams"]

具體告訴Array是什麼內容。
另外現在大家比較少去宣告NSArray和NSDictionary了。
array的話就是直接用[(型態)]的方式宣告
dictionary就是用[(key型態):(value型態)]的方式宣告。

額外的建議,你可以考慮使用SwiftyJSON這個第三方元件庫。
他很強大的能處理你JSON格式的資料,不需要自己硬幹JSON。

2deedee2 iT邦新手 5 級 ‧ 2018-09-03 13:20:58 檢舉

感謝大大的指教

0
hahand
iT邦新手 5 級 ‧ 2018-08-08 18:51:40

贊同 @Samと可樂快跑 的答案。
錯誤提示:Any 類型 不能使用腳標。
分析下teams[i]["id"],顯然 teams被聲明為NSArray,使用teams[i]不會出現問題,那麽問題就在於取值之後的對象。
解決方法:teams被聲明 [[String:Any]]或者[Array]都是可行的,這樣第一次取值[i]後,編譯器會默認元素類型為數組,再取值["id"]就不會報錯了。

2deedee2 iT邦新手 5 級 ‧ 2018-09-03 13:21:05 檢舉

感謝大大的指教

我要發表回答

立即登入回答