我正在基于coredata将注释存储并加载到地图上。
我不知道如何去敲注释和删除针的核心数据。
与tableview不同,从获取的对象数组中没有要删除的真正indexPath。我唯一能想到在屏幕上跟踪注释的方法就是给它们一个标记,并将其与我的获取的结果数组对齐,但我觉得必须有更好的方法。
我知道如何实现对管脚的攻丝,但一旦我选择了该管脚,我该如何将其与创建该管脚的coredata对象关联起来?

func loadPins(){
        let pinRequest : NSFetchRequest<Pin> = Pin.fetchRequest()
        do {
           pins = try managedObjectContext.fetch(pinRequest)
        } catch {
           print("There was en error fetching pins")
        }
        for pin in pins {
            let lat = pin.latitude
            let lon = pin.longitude
            let coordinate = CLLocationCoordinate2D(latitude: lat, longitude: lon)
            createAnnotation(coordinate: coordinate)
        }
    }



func createAnnotation(coordinate : CLLocationCoordinate2D){
        let annotation = MKPointAnnotation()
        annotation.coordinate = coordinate
        annotation.title = "henlo"
        map.addAnnotation(annotation)
    }

最佳答案

解决问题的一种方法是创建一个符合MKAnnotation的类,该类保存对核心数据对象(NSManagedObjectID)的引用。当您选择pin时,您将有权访问该对象,因此您可以使用核心数据对象ID来获取该对象并将其删除。
[managedObjectContext existingObjectWithID:objectID error:nil];
`最终类MapViewAnnotation:NSObject、MKAnnotation{

let NSManagedObjectID: objectID
let coordinate: CLLocationCoordinate2D
let title: String?
let subtitle: String?

init(objectID: NSManagedObjectID, coordinate: CLLocationCoordinate2D, title: String?=nil, subtitle: String?=nil ) {
    self.objectID = objectID
    self.coordinate = coordinate
    self.title = title
    self.subtitle = subtitle
}

}
`

关于ios - 基于MKAnnotion删除核心数据对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44578907/

10-12 01:10
查看更多