У меня есть простой массив или MKAnnotes для объектов местоположения, которые извлекаются из CoreData при загрузке вида. Когда я удаляю объект местоположения, я также вручную удаляю объект местоположения из массива. После удаления из массива я вызываю removeAnnotations(), а затем addAnnotations() на основе массива. Я заметил, что MKAnnotationView больше не находится в удаленном месте, однако он не удаляется из MapView, который перемещается только на 0º lat 0º lon.MKAnnotationView не удаляется из MKMapView
Я не уверен, что я делаю неправильно, чтобы полностью удалить его из MapView.
*** Примечание: Я следую учебному пособию, а для учебных процессов я вручную обновляю массив местоположений вместо использования NSFetchedResultsController.
Мысли?
Вот код:
var managedObjectContext: NSManagedObjectContext! {
didSet {
NSNotificationCenter.defaultCenter().addObserverForName(NSManagedObjectContextObjectsDidChangeNotification, object: managedObjectContext, queue: NSOperationQueue.mainQueue()) { notification in
if self.isViewLoaded() {
if let dictionary = notification.userInfo {
if dictionary["inserted"] != nil {
print("*** Inserted")
let insertedLocationSet: NSSet = dictionary["inserted"] as! NSSet
let insertedLocationArray: NSArray = insertedLocationSet.allObjects
let insertedLocation = insertedLocationArray[0] as! Location
self.locations.append(insertedLocation)
} else if dictionary["deleted"] != nil {
print("*** Deleted")
let deletedLocationSet = dictionary["deleted"] as! NSSet
let deletedLocationArray = deletedLocationSet.allObjects
let deletedLocation = deletedLocationArray[0] as! Location
if let objectIndexInLocations = self.locations.indexOf(deletedLocation) {
self.locations.removeAtIndex(objectIndexInLocations)
}
}
}
}
self.drawAnnotations()
}
}
}
var locations = [Location]()
func updateLocations() { // called by viewDidLoad()
let entity = NSEntityDescription.entityForName("Location", inManagedObjectContext: managedObjectContext)
let fetchRequest = NSFetchRequest()
fetchRequest.entity = entity
locations = try! managedObjectContext.executeFetchRequest(fetchRequest) as! [Location]
drawAnnotations()
}
func drawAnnotations() {
mapView.removeAnnotations(locations)
mapView.addAnnotations(locations)
}
Можете ли вы показать 'drawAnnotations)' метода (? Вы вызываете метод removeAnnotation (:) 'на карте в любом месте вашего кода? – Losiowaty