I made a little playground to do some tests on Set operations with custom objects but they are still failing and I have no idea why.
class User: NSObject {
let id: String
init(id: String) {
self.id = id
super.init()
}
override var hashValue: Int {
get {
return id.hashValue
}
}
override var description: String {
get {
return id
}
}
}
func ==(lhs: User, rhs: User) -> Bool {
return lhs.hashValue == rhs.hashValue
}
Then, I made two sets of User
objects:
let user1 = User(id: "zach")
let user2 = User(id: "john")
let user3 = User(id: "shane")
let user4 = User(id: "john")
let user5 = User(id: "shane")
let user6 = User(id: "anthony")
let userSet1 : Set<User> = [user1, user2, user3]
let userSet2 : Set<User> = [user4, user5, user6]
But when I do an operation like so:
let newSet = userSet1.subtract(userSet2)
print(newSet)
newSet
is identical to userSet1
and none of the sets are modified.
What must I do to get these set operations to work?
id:zach -> 4799450060450308971
id:john -> 4799450060152454338
id:shane -> -4799450060637667915
id:john -> 4799450060152454338
id:shane -> -4799450060637667915
id:anthony -> 4799450059843449897
id:shane -> -4799450060637667915
id:anthony -> 4799450059843449897
id:john -> 4799450060152454338