【问题标题】:Unique set of MKAnnotations独特的 MKAnnotations 集
【发布时间】:2018-10-03 12:24:25
【问题描述】:
所以我要做的是更新mapview 上的注释,但我想先将它们放入一个集合中,以便检查现有的、新的和已删除的注释。因此,我正在检查 Hashable protocol 的一致性
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)
}
【问题讨论】:
标签:
swift
mkannotation
hashable
【解决方案1】:
所以我最终得到的是这个
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)