I had been struggling to store CLLocationCoordinate2D data from markers on a google maps to CoreData. This cannot be done directly but I found a work around where I take the coordinates, split into CLLocationDegrees, convert it into a string text and store it. I do this by the following:
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)" Storing into 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") However now I am struggling to reconstruct the strings back into CLLocationCoordinates. How would I turn a string to a CLLocationDegree/CLLocationCoordinate2D ? This is supposedly pretty simple but I have found that the following method doesn't work:
let latitude: CLLocationDegrees = Double(latitudeText)! let longitude: CLLocationDegrees = Double(longitudeText)! let markers = GMSMarker() print(latitude) print(longitude) markers.position = CLLocationCoordinate2D(latitude: latitude, longitude: longitude) any other suggestions about how to change string to coordinate?
DoubleasStringto convert it back toDouble? Core Data supportsDoubleas well.