Wenn Sie wirklich verwenden möchten
protocol Item: class {
var name: String! {get set}
var value: Int! {get set}
}
class UserList {
var items: [Item]!
func checkItem(item: Item) -> Bool{
return items.contains {$0 === item}
}
}
: Identitätsoperator (
===
) für Ihre
checkItem
, können Sie Ihre
Item
als Klasse-Protokoll erklären 0
(Ich verstehe nicht, warum Sie implizit unverpackte Optionals brauchen, also habe ich sie dort behalten. Aber ich würde mich nie so viele IUOs verwenden)
Aber ich frage mich, ob Identität ist, was Sie wollen.
class ClassItem: Item {
var name: String!
var value: Int!
init(_ name: String, _ value: Int) {
self.name = name
self.value = value
}
}
let myList = UserList()
myList.items = [ClassItem("aaa", 1), ClassItem("bbb", 2)]
var result = myList.checkItem(item: ClassItem("aaa", 1))
print(result) //->false
Wenn das Ergebnis false
ist nicht das, was Sie erwarten, müssen Sie Ihre definieren eigene Gleichheit für die Item
und definieren Sie Ihre checkItem(item:)
damit.