es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo agregar MKAnnotation a Realm

Estoy intentando agregar una MKAnnotation a Realm.

Aquí están mis objetos y lo que he intentado:

class pins: Object {
    @objc dynamic var pin: MKAnnotation!
}

struct pin {
    static var pin: MKAnnotation!
}

Añadí mis estáticos a una función y usé realm.beginWrite(), etc. para agregar las anotaciones.

Error:

Thread 1: “Property pins.pin is declared as Optional, which is not a supported managed Object property type.

Si alguien sabe cómo almacenar una MKAnnotation en Realm o sabe lo que estoy haciendo mal, por favor, ¡házmelo saber! :D.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el error se produce al intentar almacenar una MKAnnotation opcional en Realm, que no es un tipo de propiedad de objeto administrado admitido. Una solución sería crear un objeto separado que se ajuste al protocolo MKAnnotation y almacenar sus propiedades en Realm. Por ejemplo:

    clase PinAnnotation: Object, MKAnnotation {
        @objc dynamic var title: String? // propiedades requeridas por MKAnnotation
        @objc dynamic var subtitle: String?
        @objc dynamic var coordinate: CLLocationCoordinate2D = CLLocationCoordinate2D()
    
        // propiedades adicionales que podrían ayudar a recuperar o mostrar la anotación
        @objc dynamic var identifier: String = ""
        @objc dynamic var note: String = ""
    }
    
    // luego, para agregar un pin:
    let annotation = PinAnnotation()
    annotation.title = "Mi Pin"
    annotation.coordinate = CLLocationCoordinate2D(latitude: 40.7128, longitude: -74.0060)
    
    let realm = try! Realm()
    try! realm.write {
        realm.add(annotation)
    }
    

    Esto debería permitirle almacenar MKAnnotations en Realm y recuperarlos más tarde. Tenga en cuenta que es posible que deba manejar la actualización o eliminación de anotaciones por separado, según su caso de uso.

Comments are closed.