gpt4 book ai didi

swift - 如何在 Swift 中将位置面包屑保存到 CoreData

转载 作者:行者123 更新时间:2023-11-28 12:51:11 25 4
gpt4 key购买 nike

我正在尝试将用户旅程保存为 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
}
}

最佳答案

由于您只保存一个面包屑位置,因此 Core Data 不合适。如果您正在保存需要显示、搜索等的面包屑集合,那么它可能有意义。

对于单个 CLLocation,使用 NSUserDefaultsCLLocation 符合 NSCoding,因此您可以将其转换为 NSData 并保存:

let locationData = NSKeyedArchiver.archivedDataWithRootObject(location)
NSUserDefaults.standardUserDefaults().setObject(locationData, forKey: "breadcrumb")

当您读取数据时,查找“location” 的值,然后使用NSKeyedUnarchiver 将其转换回CLLocation

关于swift - 如何在 Swift 中将位置面包屑保存到 CoreData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36480247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com