0

所以我要做的是更新 a 上的注释mapview,但我想先将它们放入 Set 中,以便检查现有的、新的和已删除的注释。因此,我正在检查 Hashable 的protocol一致性

协议 'Hashable' 只能用作通用约束,因为它具有 Self 或关联的类型要求

关于如何做我想做的任何想法

var set: Set<Hashable> = Set()
for annotation in self.annotations {
     guard let hashable = annotation as? Hashable else { continue }
     set.update(with: hashable)
}
4

1 回答 1

0

所以我最终得到的是这个

let newHashValues = Set(new.map{ $0.hash })
let existingHashValues = Set(self.annotations.map{ $0.hash })

let removedHashes = existingHashValues.subtracting(newHashValues)
let addedHashed = newHashValues.subtracting(existingHashValues)

let removed = self.base.annotations.filter({ removedHashes.contains($0.hash) })
let added = element.filter({ addedHashed.contains($0.hash) })

self.removeAnnotations(removed)
self.addAnnotations(added)
于 2018-10-03T14:52:08.313 回答