1

我为 Array 创建了简单的扩展,它只会附加唯一的元素。在我想使用一系列选项之前,它工作正常。既然我不断收到错误 Type 'Event?' does not conform to protocol 'Equatable'

事件类

import RealmSwift
class Event: Object,Equatable {
    dynamic var id = ""
}

func ==(lhs: Event, rhs: Event) -> Bool {
    return lhs.id == rhs.id
}

扩大

extension Array where Element : Equatable {
    mutating func appendUniqueContentOf(elements:[Element]){
        for ele in elements {
            if (!contains(ele)){
                append(ele)
            }
        }
    }
}

用法

var newEvents:[Event] = someEvents()
var events = [Event?]()
events.appendUniqueContentOf(newEvents)

问题 我不明白这种情况。Event类符合该协议。我也尝试过添加其他==功能组合,但没有成功。

我不知道如何看待这个问题。是我延期的问题吗?我应该如何正确处理它?你能告诉我正确的轨道吗?

4

1 回答 1

1

Event?是 . 的语法糖Optional<Event>。既然Optional不符合Equatable,也不会Optional<Event>

尽管可能,但我强烈反对实施Equatablefor Optional。话虽如此,您可能应该重新考虑并尝试使用 just Array<Event>

于 2015-11-18T22:00:24.950 回答