Неопознанный объект публикации в аннотации SwiftUI Map

Настраивать:

Мое приложение использует SwiftUIMapс аннотациями. Аннотации должны быть экземплярамиPlaceкласс определяется как:

      final class Place: NSManagedObject, UpdateTimestampable, Identifiable {
    @NSManaged var horizontalAccuracy: Double
    @NSManaged var latitude: Double
    @NSManaged var longitude: Double
    @NSManaged var name: String
    @NSManaged var namesOfItemsBoughtHere: Set<String>?
    @NSManaged var radius: Double
    @NSManaged var updatedAt: Date?
    
    var coordinate: CLLocationCoordinate2D {
        var coord = CLLocationCoordinate2D()
        if let context = self.managedObjectContext {
            context.performAndWait {
                coord = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
            }
        } else {
            fatalError("Place without context")
        }
        return coord
    } 
} 

Места, используемые в качестве аннотаций на конкретной карте, определяются MapViewModel:

          let placesForBuyLocationNames = mapViewModel.placesForBuyLocationNames()  

Проблема:

Когда эти места используются непосредственно в качестве аннотаций, генерируется ошибка времени выполнения:

          let annotations = placesForBuyLocationNames
    Map(coordinateRegion: $region,
            interactionModes: .all,
            showsUserLocation: false,
            annotationItems: annotations) { annotation in
        MapAnnotation(coordinate: annotation.coordinate, anchorPoint: CGPoint(x: 0.5, y: 1)) {
                AnnotationView(region: region, buyPlaceNameBeforeDragging: annotation.name, mapviewModel: mapViewModel)
        }
    }  

Ошибка выполнения:

      Publishing changes from within view updates is not allowed, this will cause undefined behavior.  

Однако ошибка времени выполнения не генерируется, если эти места сопоставлены со вспомогательной структурой и эти структуры используются в качестве аннотаций:

      struct Annotation: Identifiable {
    let id = UUID()
    let name: String
    let coordinate: CLLocationCoordinate2D
}
// …
            let annotations = placesForBuyLocationNames.map { Annotation(name: $0.name, coordinate: $0.coordinate) }  

Вопросы:

Что может быть причиной этой ошибки времени выполнения?
Что-то не так с моим кодом?

0 ответов

Другие вопросы по тегам