Неопознанный объект публикации в аннотации 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) }
Вопросы:
Что может быть причиной этой ошибки времени выполнения?
Что-то не так с моим кодом?