我想从当前登录的用户那里获取所有位置记录。
这将在CloudKit上创建位置记录:
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations.last!
let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)
addCrumbPoint(center)
let locationRecord = CKRecord(recordType: "location")
locationRecord["location"] = location
let publicData = CKContainer.defaultContainer().publicCloudDatabase
publicData.saveRecord(locationRecord) { record, error in
}
}
但是,如何仅为当前登录的用户提取位置记录呢?
我想用它来创建地图上之前旅程的面包屑,但只是让它打印一个列表将是一个很好的开始!
到目前为止,这是我的代码:
func getLocationAsync(complete: (instance: CKRecordID?, error: NSError?) -> ()) {
let container = CKRecordID(recordName: "Location")
publicDB.fetchRecordWithID(location) { fetchedLocation, error in
if error != nil {
print(error!.localizedDescription)
complete(instance: nil, error: error)
} else {
print("fetched Location \(recordID?.recordName)")
complete(instance: recordID, error: nil)
}
}
}
答案 0 :(得分:1)
如果您的目标是保存用户的面包屑位置而不是将其共享给其他用户,那么请使用私有数据库。 像这样,您可以检索用户的所有位置记录。
如果要使用公共数据库,请将CKReference类型的条目添加到指向用户记录的位置记录中。这样您就可以使用基于用户recordID的谓词