2015-11-08 69 views
5

我有這樣的代碼:曖昧使用Xcode的標7.1

var jsonResult = (try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)) as! NSDictionary 
var count = jsonResult["levels"]!.count as Int 
for var i=0; i<count; ++i { 
    let obj = jsonResult["levels"]![i] as! NSDictionary 
    ... 
} 

在我收到此錯誤的最後一行:

Ambiguous use of subscript

我怎樣才能解決這個問題?

此代碼已經工作了一段時間,但隨着升級到xcode 7.1它打破並停止工作。

回答

19

你必須告訴編譯器什麼的中介目標是在該行

let obj = jsonResult["levels"]![i] as! NSDictionary 

聲明jsonResult["levels"]!編譯器不知道什麼樣的對象,他是處理後。你必須告訴它是一個NSArray或別的東西:

let obj = (jsonResult["levels"] as! NSArray)[i] as! NSDictionary 

當然,你還應該確保你其實可以做的一切,鑄造,而且裏面的JSON對象真的是期望的類型。

let obj = (jsonResult["levels"] as! [NSDictionary])[i] 

的理由是一樣的:你能告訴什麼jsonResult["levels"]類型的編譯器只使用一個直接鑄造的NSDictionary數組投


哪怕是一點點短。它應該是一個包含NSDictionary的數組。

0

在新的Swift更新中。你應該用objectForKey("yourKey")方法而不是​​來得到你的價值。在你的情況下,

let obj = jsonResult.objectForKey("levels")![i] as! NSDictionary