Ich hatte Mühe, CLLocationCoordinate2D Daten von Markern auf einer Google Maps zu CoreData zu speichern. Dies kann nicht direkt gemacht werden, aber ich habe eine Arbeit gefunden, wo ich die Koordinaten nehme, in CLLocationDegrees aufspalten, sie in einen String-Text umwandeln und speichern. Ich tue dies durch die folgende:Konvertieren String aus CoreData in CLLocationDegrees/CLLocationCoordinate2D
let marker = GMSMarker()
marker.position = CLLocationCoordinate2DMake(place.coordinate.latitude, place.coordinate.longitude)
let newPlaceLatitude = place.coordinate.latitude
print(newPlaceLatitude)
var latitudeText:String = "\(newPlaceLatitude)"
self.latitudeText = "\(newPlaceLatitude)"
let newPlaceLongitude = place.coordinate.longitude
print(newPlaceLongitude)
var longitudeText:String = "\(newPlaceLongitude)"
self.longitudeText = "\(newPlaceLongitude)"
Speichern in Coredata:
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let newPlace = NSEntityDescription.insertNewObject(forEntityName:
"StoredPlace", into: context)
newPlace.setValue(latitudeText, forKeyPath: "latitude")
newPlace.setValue(longitudeText, forKeyPath: "longitude")
aber jetzt habe ich die Saite wieder in CLLocationCoordinates zu rekonstruieren bin zu kämpfen. Wie würde ich eine Zeichenfolge in CLLocationDegree/CLLocationCoordinate2D umwandeln? Dies ist angeblich ziemlich einfach, aber ich habe festgestellt, dass die folgende Methode funktioniert nicht:
let latitude: CLLocationDegrees = Double(latitudeText)!
let longitude: CLLocationDegrees = Double(longitudeText)!
let markers = GMSMarker()
print(latitude)
print(longitude)
markers.position = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
andere Vorschläge, wie Zeichenfolge ändern zu koordinieren?
Wahrscheinlich nicht verwandt, aber warum speichern Sie eine 'Double' als' String' es zurück zu konvertieren zu "verdoppeln"? Core Data unterstützt auch 'Double'. – vadian
Was wurde daraus? – Adrian
Der Grund, warum ich es nicht sofort als Double gespeichert habe, ist, dass ich immer Fehler bekam und es nicht umgehen konnte. Also dachte ich, diese Methode von Double zu String-String zu Double würde genauso gut funktionieren. Adrian I didn ' t verstehst du deine Antwort vollständig, also benutze die Methode, um die Zeichenkette in viewDidLoad zurück in double zu konvertieren, wenn du die Daten von coredata unter Verwendung von: if let lat = result.value (forKey: "latitude") als? NSString {Let Latitude = (lat als NSString) .DoubleValue} und das zum Rekonstruieren von Markern verwenden –