如何在应用关闭后保存 Pin 注释 (Swift)
How to save Pin Annotation once app is closed (Swift)
目前,我的应用固定了一个位置,该位置是这样的商店:
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
// Find location of user
var userLocation:CLLocation = locations[0] as! CLLocation
var latitude = userLocation.coordinate.latitude
var longitude = userLocation.coordinate.longitude
var latDelta:CLLocationDegrees = 0.01
var longDelta: CLLocationDegrees = 0.01
var span: MKCoordinateSpan = MKCoordinateSpanMake(latDelta, longDelta)
var location:MKUserLocation = currentLocation;
var region: MKCoordinateRegion = MKCoordinateRegionMake(location.coordinate, span)
var coordinate:CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitude);
carInitialLocation = userLocation;
locationsDefaults.append(carInitialLocation);
carInitialCoordinate = coordinate;
self.map.setRegion(region, animated: true);
}
其中 locationsDefaults 是我存储图钉位置的数组。
我想使用 NSUserdefaults,但我不太确定我该怎么做,因为它不会使用非 NS 数据。 swift 中的 guideline/structure 将不胜感激!
您可以将 NSData 保存到 NSUserDefaults。所以你只需要使用 NSKeyedArchiver method archivedDataWithRootObject 将你的 CLLocation 对象转换为 NSData 如下:
// saving your CLLocation object
let locationData = NSKeyedArchiver.archivedDataWithRootObject(carInitialLocation)
NSUserDefaults.standardUserDefaults().setObject(locationData, forKey: "locationData")
// loading it
if let loadedData = NSUserDefaults.standardUserDefaults().dataForKey("locationData") {
if let loadedLocation = NSKeyedUnarchiver.unarchiveObjectWithData(loadedData) as? CLLocation {
println(loadedLocation.coordinate.latitude)
println(loadedLocation.coordinate.longitude)
}
}
目前,我的应用固定了一个位置,该位置是这样的商店:
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
// Find location of user
var userLocation:CLLocation = locations[0] as! CLLocation
var latitude = userLocation.coordinate.latitude
var longitude = userLocation.coordinate.longitude
var latDelta:CLLocationDegrees = 0.01
var longDelta: CLLocationDegrees = 0.01
var span: MKCoordinateSpan = MKCoordinateSpanMake(latDelta, longDelta)
var location:MKUserLocation = currentLocation;
var region: MKCoordinateRegion = MKCoordinateRegionMake(location.coordinate, span)
var coordinate:CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitude);
carInitialLocation = userLocation;
locationsDefaults.append(carInitialLocation);
carInitialCoordinate = coordinate;
self.map.setRegion(region, animated: true);
}
其中 locationsDefaults 是我存储图钉位置的数组。
我想使用 NSUserdefaults,但我不太确定我该怎么做,因为它不会使用非 NS 数据。 swift 中的 guideline/structure 将不胜感激!
您可以将 NSData 保存到 NSUserDefaults。所以你只需要使用 NSKeyedArchiver method archivedDataWithRootObject 将你的 CLLocation 对象转换为 NSData 如下:
// saving your CLLocation object
let locationData = NSKeyedArchiver.archivedDataWithRootObject(carInitialLocation)
NSUserDefaults.standardUserDefaults().setObject(locationData, forKey: "locationData")
// loading it
if let loadedData = NSUserDefaults.standardUserDefaults().dataForKey("locationData") {
if let loadedLocation = NSKeyedUnarchiver.unarchiveObjectWithData(loadedData) as? CLLocation {
println(loadedLocation.coordinate.latitude)
println(loadedLocation.coordinate.longitude)
}
}