二元运算符'!='不能应用于两个[[String]]'操作数

时间:2017-03-22 10:21:23

标签: arrays swift binary-operators

我有一个数组数组,需要过滤掉其中的一个特定数组。但是,当使用以下代码时,我会遇到问题"二元运算符'!='不能应用于两个[[String]]'操作数"

var arrayOfArrays = [[[String]]]()
var specificArray = [[String]]()

arrayOfArrays = arrayOfArrays.filter{$0 != specificArray}

我认为这曾经像半年前一样工作......

1 个答案:

答案 0 :(得分:1)

正如评论中所述,Swift Arrays don't conform to Equatable因此[[T]] != [[T]]不起作用,因为它需要[T]为Equatable。您可以使用elementsEqual(_:by:)代替,它允许使用自定义相等函数比较元素,而不是Equatable:

arrayOfArrays = arrayOfArrays.filter { !$0.elementsEqual(specificArray, by: ==) }

(注意:感谢SE-0143 "Conditional conformances",一旦Swift 4发布,就不再需要这种解决方法。)