相关疑难解决方法(0)

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

我有一个协议类Equatable.这个类看起来像这样:

class Item: Equatable {

    let item: [[Modifications: String]]

    init(item: [[Modifications: String]]) {
        self.item = item
    }
}

func ==(lhs: Item, rhs: Item) -> Bool {
    return lhs.item == rhs.item
}
Run Code Online (Sandbox Code Playgroud)

但这给了我错误(见标题).该属性item[[String: String]]以前,没有问题,我不知道如何解决这个问题.我试着谷歌搜索和搜索所有的SO但没有运气..

枚举只是一个简单的基本:

enum Modifications: Int {
    case Add    = 1
    case Remove = 2
    case More   = 3
    case Less   = 4
}
Run Code Online (Sandbox Code Playgroud)

enums swift equatable

18
推荐指数
1
解决办法
2万
查看次数

为什么Equatable没有为可选数组定义

有人能给我一个很好的理由说明为什么这不起作用:

let a: [Int]? = [1]
let b: [Int]? = nil
a == b
Run Code Online (Sandbox Code Playgroud)

这将是我提出的(如果不优雅)解决方案.但这是微不足道的,所以我觉得我错过了一个很好的理由,为什么没有实现.

func ==<T: Equatable>(lhs: [T]?, rhs: [T]?) -> Bool {

    if let lhs = lhs, let rhs = rhs {
        return lhs == rhs
    }
    else if let _ = lhs {
        return false
    }
    else if let _ = rhs {
        return false
    }

    return true
}
Run Code Online (Sandbox Code Playgroud)

swift swift2

11
推荐指数
1
解决办法
2020
查看次数

检查数组是否包含某些内容 - Swift 4

我发现.contains(Element)方法在我编写Swift代码的最小经验中非常重要,并且很快意识到Apple改变了它...

func contains(check:[[[Int]]], forElement: [[Int]]) -> Bool {
    for element in check {
        if areEqual(element, forElement) {
            return true
        }
    }
    return false
}
func areEqual(_ a:[[Int]], _ b:[[Int]]) -> Bool {
    for i in 0..<a.count {
        if a[i] != b[i] {
            return false
        }
    }
    return true
}
Run Code Online (Sandbox Code Playgroud)

我一直在搞乱一些大型数组,所以我用那个笨重的函数解决了我的问题.

发生了什么?

你如何使用新的方式

那里的例子很好,我确信他们打算这样做.

enum HTTPResponse {
    case ok
    case error(Int)
}

let lastThreeResponses: [HTTPResponse] = [.ok, .ok, .error(404)]
let hadError = lastThreeResponses.contains { element in
    if case .error …
Run Code Online (Sandbox Code Playgroud)

arrays swift

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

swift ×3

arrays ×1

enums ×1

equatable ×1

swift2 ×1