Enregistrement des épingles de carte dans un tableau, Swift

Je crée une application de type carte, une fois que l'user appuie sur un button, une broche est déposée sur la carte à son location actuel. J'essaie d'save les pins de la carte dans un tableau afin qu'ils restnt une fois l'application fermée.

Voici mon code jusqu'à présent:

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { let location = locations.last let center = CLLocationCoordinate2D(latitude: location!.coordinate.latitude, longitude: location!.coordinate.longitude) let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.004, longitudeDelta: 0.004)) self.placesMap?.setRegion(region, animated: true) self.locationManager.stopUpdatingLocation() } func locationManager(manager: CLLocationManager, didFailWithError error: NSError) { print("Error code: " + error.localizedDescription) } // Add button action @IBAction func addButton(sender: AnyObject) { let annotation = MKPointAnnotation() annotation.coordinate = CLLocationCoordinate2D(latitude: self.placesMap.userLocation.coordinate.latitude, longitude: self.placesMap.userLocation.coordinate.longitude) self.placesMap.addAnnotation(annotation) self.locationManager.startUpdatingLocation() } 

Comment puis-je sauvegarder les informations de l'épingle dans un tableau qui est rechargé chaque fois que l'application est ouverte?

Si vous souhaitez conserver datatables entre les lancements d'applications et que vous ne stockez pas beaucoup de données, il est facile d'utiliser NSUserDefaults. Vous pouvez le faire en disant quelque chose comme:

 func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { let location = locations.last let center = CLLocationCoordinate2D(latitude: location!.coordinate.latitude, longitude: location!.coordinate.longitude) let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.004, longitudeDelta: 0.004)) self.placesMap?.setRegion(region, animated: true) self.locationManager.stopUpdatingLocation() let locationDictionary:[Ssortingng:Double] = ["latitude":center.latitude,"longitude":center.longitude] var locationArray = [[Ssortingng:Double]]() if NSUserDefaults.standardUserDefaults().objectForKey("locationArray") != nil { locationArray = NSUserDefaults.standardUserDefaults().objectForKey("locationArray") as! [[Ssortingng:Double]] } locationArray.append(locationDictionary) NSUserDefaults.standardUserDefaults().setObject(locationArray, forKey: "locationArray") NSUserDefaults.standardUserDefaults().synchronize() } 

Vous devrez ensuite lire ces locations lorsque l'application sera relancée. Vous pouvez le faire dans viewDidLoad. Par exemple:

 override func viewDidLoad(){ super.viewDidLoad() if NSUserDefaults.standardUserDefaults().objectForKey("locationArray") != nil { for dictionary in NSUserDefaults.standardUserDefaults().objectForKey("locationArray") as! [[Ssortingng:Double]]{ let center = CLLocationCoordinate2D(latitude: dictionary["latitude"]!, longitude: dictionary["longitude"]!) let annotation = MKPointAnnotation() annotation.coordinate = center self.placesMap.addAnnotation(annotation) } } } 

Si vous voulez supprimer tous les locations enregistrés, vous pouvez dire quelque chose comme:

  func removeStoredLocations(){ NSUserDefaults.standardUserDefaults().removeObjectForKey("locationArray") NSUserDefaults.standardUserDefaults().synchronize() }