2014-09-01 75 views
-2

這行代碼似乎會造成問題爲什麼我快速動態投射失敗?

{ 
gymnastTables.gymnastsArray = defualts.objectForKey("Gymnasts") as Array 
} 

爲什麼我得到一個沮喪的錯誤?

+3

我想你應該發佈更多代碼並報告完整的錯誤消息。乍一看,我想說錯誤是由於「體操運動員」對應的值不是一個數組而導致的。你有沒有嘗試將它保存到一個單獨的變量並檢查出來? – Antonio 2014-09-01 21:05:27

+0

調試:如果可能,請使用最少的代碼減少問題以產生問題。在這種情況下,'gymnastTables.gymnastsArray'比''let x''更復雜,用於測試。是否讓'x = defuals.objectForKey(「Gymnasts」)作爲Array'工作? 'defaults'好嗎?是否有''Gymnasts''元素(你可以檢查默認文件)。 – zaph 2014-09-01 23:43:17

回答

0

objectForKey有返回類型:AnyObject?因此它可能是nil

您可以先通過as AnyObject!解開它喪氣後Array

gymnastTables.gymnastsArray = 
     defualts.objectForKey("Gymnasts") as AnyObject! as Array<AnyObject> 

你沒有提到Array類型,所以我添加AnyObject這將永遠是真的

0

在斯威夫特,你指定Array包含什麼類型的,要麼喜歡Array<Gymnast>[Gymnast]

+0

可能已經完成,沒有足夠的代碼來說明。 – zaph 2014-09-01 23:43:51