我为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
类符合该协议。我还尝试添加==
功能的其他组合,但没有成功。
我不知道如何回答这个问题。这是我延期的问题吗?我应该如何正确接近它?你能告诉我正确的轨道吗?
答案 0 :(得分:1)
Event?
是Optional<Event>
的语法糖。由于Optional
不符合Equatable
,Optional<Event>
也不会。
虽然可能,但我强烈反对Equatable
实施Optional
。话虽如此,您可能应该重新考虑并尝试仅使用Array<Event>
。