我正在使用=来一个UIView到一个数组,似乎不再有效.这条线
dropsFound += hitView
给出错误'[(UIView)]’与’UInt8’不同
这是方法的一部分.请注意,从Xcode 6 beta 5开始,hitTest现在返回一个可选项,因此有必要说
hitView?.superview
代替
hitView.superview
在’if’语句中.
func removeCompletedRows() -> Bool { println(__FUNCTION__) var dropsToRemove = [UIView]() for var y = gameView.bounds.size.height - DROP_SIZE.height / 2; y > 0; y -= DROP_SIZE.height { var rowIsComplete = true var dropsFound = [UIView]() for var x = DROP_SIZE.width / 2; x <= gameView.bounds.size.width - DROP_SIZE.width / 2; x += DROP_SIZE.width { let hitView = gameView.hitTest(CGPointMake(x,y),withEvent: nil) if hitView?.superview === gameView { dropsFound += hitView } else { rowIsComplete = false break } }
…省略了方法的其余部分
解决方法
这在上一版本中发生了变化.从beta 5发行说明:
The
+=
operator on arrays only concatenates arrays,it does not append an element. This resolves ambiguity working withAny
,AnyObject
and related types.
因此,如果=的左侧是一个数组,那么现在必须也是.
所以:
dropsFound.append(hitView)
或者,如果你真的想使用=你可能会做:
dropsFound += [hitView]
但那会有点傻.使用追加,如错误消息建议.