我正在尝试将用户旅程保存为CoreData中的痕迹,因此即使他们退出应用我也可以检索它。目前,下面的代码将他们的位置保存到CloudKit,但我被告知为了检索他们的痕迹,最好将其保存到Core Data。
只是想知道我是怎么做到的?
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations.last!
let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)
addCrumbPoint(center)
// Add to Cloudkit
let locationRecord = CKRecord(recordType: "location")
locationRecord["location"] = location
let publicData = CKContainer.defaultContainer().publicCloudDatabase
publicData.saveRecord(locationRecord) {
record, error in
}
}
答案 0 :(得分:2)
由于您只保存一个面包屑位置,因此Core Data不合适。如果你要保存一些你需要显示,搜索等的面包屑,那么它可能是有意义的。
对于单个CLLocation
,请使用NSUserDefaults
。 CLLocation
符合NSCoding
,因此您需要将其转换为NSData
并保存:
let locationData = NSKeyedArchiver.archivedDataWithRootObject(location)
NSUserDefaults.standardUserDefaults().setObject(locationData, forKey: "breadcrumb")
当您阅读数据时,请查看"location"
的值,然后使用NSKeyedUnarchiver
将其转换回CLLocation
。