2016-09-17 75 views
1

我更新到Swift 3,我得到這個錯誤,我無法解決它。Swift 3:錯誤:輸入'Any'沒有下標成員

Type 'Any' has no subscript member

我已經讀了答案:

39480150 - 38956785 - 39516199

但我無法解答解決我的問題。

這是我的代碼:

let pathperdataselezionata = Bundle.main.path(forResource: "Annuale", ofType: "plist") 
let dictperdataselezionata = NSDictionary(contentsOfFile: pathperdataselezionata!) as![String:AnyObject] 
let valoridataodierna = dictperdataselezionata[annoscelto]?[mesescritto]?![daymonth?] as? [Double] 
let Grad = Int(valoridataodierna![0]) 
let Ampo:Double = valoridataodierna![1] 

而且我的錯誤就行了:

let valoridataodierna 

任何幫助非常感謝。

謝謝。

+0

你有3個下標[String:AnyObject]。應該是[String:[AnyObject]]? – Shades

+1

編譯器需要知道** all **下標對象的類型。由於數據來自包中的文件,爲什麼要使用問號?如果您遇到運行時錯誤,您的設計非常糟糕。 – vadian

回答

2

試試這個。

let dictperdataselezionata = NSDictionary(contentsOfFile: pathperdataselezionata!) as! [String:[String:[String:AnyObject]]] 
let valoridataodierna = dictperdataselezionata[annoscelto]?[mesescritto]?![daymonth?] as? [Double] 
+0

這解決了我的問題。非常感謝。由於我的名譽,我無法接受答案。 – Aldo

+0

歡迎伴侶:) –

0

看起來蘋果的建議是使用大量變量,請參閱:Working with JSON in Swift

if let pathperdataselezionata = Bundle.main.path(forResource: "Annuale", ofType: "plist"), 
    let dictperdataselezionata = NSDictionary(contentsOfFile: pathperdataselezionata) as? [String: Any], 
    let dictAnnoscelto = dictperdataselezionata[annoscelto] as? [String: Any], 
    let dictMesescritto = dictAnnoscelto[mesescritto] as? [String: Any], 
    let daymonth = daymonth, 
    let valoridataodierna = dictMesescritto[daymonth] as? [Double] 
{ 
    let Grad = Int(valoridataodierna[0]) 
    let Ampo:Double = valoridataodierna[1] 
} 
相關問題