Уникальный набор MKAnnotations - PullRequest
0 голосов
/ 03 октября 2018

Итак, я пытаюсь обновить аннотации на mapview, но я хочу сначала поместить их в набор, чтобы проверить существующие, новые и удаленные аннотации.У меня есть некоторая проверка на соответствие 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)
}

1 Ответ

0 голосов
/ 03 октября 2018

Итак, чем я закончил, так это

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...