Преобразование CLLocationCoordinate2D в строку, которая может быть сохранена

Я пытаюсь сохранить координаты пользователя в одном ViewController, чтобы его можно было использовать для создания аннотации, которая может отображаться в другом ViewController.

В контроллере представления, который хранит координаты, я использую код

NSUserDefaults.standardUserDefaults().setObject( Location, forKey: "Location") 

В контроллере отображения карты, который отображает аннотацию, я пытаюсь получить координаты с помощью кода

 let Location = NSUserDefaults.standardUserDefaults().stringForKey("Location") var Annotation = MKPointAnnotation() Annotation.coordinate = Location 

Он говорит мне, что значение типа String? к значению типа CLLocationCoordinate2D .

Итак, как мне преобразовать координаты CLLocationCoordinate2D в значение типа String ?

Таким образом вы можете хранить местоположения в NSUserDefaults :

 //First Convert it to NSNumber. let lat : NSNumber = NSNumber(double: Location.latitude) let lng : NSNumber = NSNumber(double: Location.longitude) //Store it into Dictionary let locationDict = ["lat": lat, "lng": lng] //Store that Dictionary into NSUserDefaults NSUserDefaults.standardUserDefaults().setObject(locationDict, forKey: "Location") 

После этого вы можете получить к нему доступ таким образом:

 //Access that stored Values let userLoc = NSUserDefaults.standardUserDefaults().objectForKey("Location") as! [String : NSNumber] //Get user location from that Dictionary let userLat = userLoc["lat"] let userLng = userLoc["lng"] var Annotation = MKPointAnnotation() Annotation.coordinate.latitude = userLat as! CLLocationDegrees //Convert NSNumber to CLLocationDegrees Annotation.coordinate.longitude = userLng as! CLLocationDegrees //Convert NSNumber to CLLocationDegrees 

ОБНОВИТЬ:

ЗДЕСЬ – ваш пример.

 extension CLLocationCoordinate2D:Printable { init(coords : String) { var fullNameArr = split(coords) {$0 == ";"} self.latitude = NSNumberFormatter().numberFromString(fullNameArr[0])!.doubleValue self.longitude = (fullNameArr.count > 1) ? NSNumberFormatter().numberFromString(fullNameArr[1])!.doubleValue : 0 } public var description : String { return "\(self.latitude);\(self.longitude)" } } 

Затем используйте как в вашем примере кода:

 var coord = CLLocationCoordinate2D(latitude: 3.2, longitude: 6.4) NSUserDefaults.standardUserDefaults().setObject(coord.description, forKey: "Location") var readedCoords = CLLocationCoordinate2D(coords: NSUserDefaults.standardUserDefaults().stringForKey("Location")!) 

Вы можете хранить широту или долготу (или оба в словаре или кортеже). Ну уж уж уж троекльственное фрельзвлено фрельвлено троель троль троль

 func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { var locValue:CLLocationCoordinate2D = manager.location!.coordinate var lat : String = locValue.latitude.description var lng : String = locValue.longitude.description //do whatever you want with lat and lng } 
  • Как использовать persist & retrieve объект, совместимый с NSCoding, в приложении Каталог документов в Swift 3?
  • Применение типов с помощью NSSecureCoding
  • NSCoding и сохранение / загрузка значений по умолчанию
  • Как декодировать Double, используя NSCoder, NSObject и Swift 3 для iOS
  • Архивирование UIImageView с помощью NSCoding
  • Swift: не соответствует протоколу NSCoding
  • как сохранить мои значения uitextfield в viewController, когда я звоню?
  • Хорошая практика для Game Center matchData
  • Архивирование объектов iOS от начала до конца
  • Как я могу декодировать объект, когда исходный класс недоступен?
  • Сериализация / сохранение UIView и его подзонов
  • Interesting Posts

    iOS – Facebook SDK v3.11.1 – изменить идентификатор приложения по умолчанию

    Как найти indexPath для нажатой кнопки в tableView Использование Seque

    Что нужно каждому разработчику iOS (лицензирование / учет) при работе в качестве сотрудников компании?

    push-уведомление: оба didFailToRegister и didRegister делегат не вызывает

    Внедрение встроенных двоичных файлов Xcode против отладки

    Вход в Функциональность на iPhone для существующего веб-сайта

    Может ли приложение iPhone / iPad встроить браузер, который может воспроизводить поток RTSP с помощью тега HTML5?

    iOS MapView: добавьте аннотацию к крану, но не если существующая аннотация нажата

    iOS 7 beginUpdates endUpdates несовместим

    Индикатор прокрутки UITableView под UINavigationBar после изменения contentEdgeInset

    Какие услуги чтения-SMS-онлайн получат коды подтверждения от цифр?

    Открытие приложений и закрытие вкладок Safari в iOS

    UIButton показывает tintColor только при нажатии, а не в нормальном состоянии

    Определить, является ли приложение версией или версией разработки

    Ошибка сборки Xcode 7: ld: библиотека не найдена для -lGoogleAnalyticsServices

    Давайте будем гением компьютера.