2014-09-01 77 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