假设我们有这个特殊情况
let closestStationAnnotations = closestAnnotations.filter({
return true
})
我所拥有的地方:
let closestAnnotations:[MKAnnotation]
使用XCode 7b6,编译器返回:
Tuple pattern cannot match values of the non-tuple type MKAnnotation
这个错误究竟意味着什么?
PS:对于那些好奇的人来说,这个问题与another I had previously有关。
答案 0 :(得分:1)
我目睹了Xcode给出的错误消息与实际问题没什么关系的多种情况。在您的特定情况下,真正的问题是,当您使用简写符号(省略块签名)时,您必须使用块内的参数。例如,这会编译,因为在块内部使用了单个块参数$0
:
let c = closestAnnotations.filter { $0 === $0 }
但是,这不会编译,因为它没有使用块参数:
let c = closestAnnotations.filter { return true }
如果要显式不使用block参数,则必须使用下划线语法告诉编译器:
let c = closestAnnotations.filter { _ in return true }
这种限制有点愚蠢和混乱,并且当您使用带有完整块签名的常规表单时不适用。编译好了:
let c = closestAnnotations.filter { (e: MKAnnotation) -> Bool in
return true
}