我正在使用+ =对数组进行UIView,而且似乎不再有效。这条线
dropsFound += hitView
给出错误' [(UIView)]'与' UInt8'
不同这是该方法的一部分。请注意,从Xcode 6 beta 5开始,hitTest现在返回一个可选项,因此有必要说
hitView?.superview
而不是
hitView.superview
在'中'言。
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
}
}
...省略方法的剩余部分
答案 0 :(得分:21)
在上一版本中发生了变化。从beta 5发行说明:
数组上的
+=
运算符仅连接数组,不附加元素。这解决了使用Any
,AnyObject
和相关类型的歧义。
因此,如果+=
的左侧是一个数组,那么现在也必须正确。
这样:
dropsFound.append(hitView)
或者,如果您真的想使用+=
,您可能会这样做:
dropsFound += [hitView]
但那会有点傻。使用append
,如错误消息所示。
答案 1 :(得分:0)
解决方案似乎是您需要对数组使用append方法而不是+ =。我不知道这个的原因,所以另一个答案可能更合适。
而不是
dropsFound += hitView
使用
dropsFound.append(hitView!)
再次注意,从XT 6 beta 5开始,从hitTest返回的UIView是可选的。
我确认这是带有以下游乐场示例的数组的一般问题。错误报告已发布到Apple。
var s: [String] = []
// s += "hello" // error: '[String]' is not identical to 'UInt8'
s.append("hello")
s
如果你试图追加元组,或者其他类型,还有一个额外的复杂性。
// line below no longer works in Xcode 6 beta 5
// and you will also get an error trying to append the tuple directly
// which is probably a bug
// possibleFlipsArray += (x, y)
// possibleFlipsArray.append((x, y))
let tempTuple = (x, y)
possibleFlipsArray.append(tempTuple)
这可能值得拥有自己的问题,虽然我认为这只是另一个错误,所以我再次将它发布给Apple。
答案 2 :(得分:0)
在数组中添加对象DropFound + = hitView,以这种方式,在上一版本中被删除。 你可以使用这个语法dropFound + = [hitView]或dropsFound.append(hitView)在数组中添加元素