içeriyorken beklenmedik şekilde çalışma ayarlanmadı Kod tabanımızı Swift2'ye yükselttikten sonra olağandışı bir sorunla karşılaştım. Set, beklenmedik şekilde birleştirme ya da birleştirme değildir.Swift 2.0 NSObject alt sınıfı
class A: NSObject {
let h: Int
init(h: Int) {
self.h = h
}
override var hashValue: Int {
return h
}
}
func ==(lhs: A, rhs: A) -> Bool {
return lhs.hashValue == rhs.hashValue
}
let a = A(h: 1)
let b = A(h: 1)
var sa = Set([a])
let sb = Set([b])
sa.subtract(sb).count // Swift1.2 prints 0, Swift 2 prints 1
sa.contains(a) // Swift1.2 true, Swift 2 true
sa.contains(b) // Swift1.2 true, Swift 2 false
Yeni Set, dahili işlemler için hashValue kullanılmıyor gibi görünüyor. Herhangi bir fikir, bir hata ya da bu sorunun çözümü için bir yol mu?
Teşekkür ederiz! Bu problemi MKAnnotation alt sınıfında (NSObject'i de genişletmesi gerekiyor) yapıyordum. Konuyla ilgili bazı belgelerin bağlantısı var mı? – brki
Hem IsEqual hem de hashValue, Swift 3 –