从当前的iCloud用户

时间:2016-04-07 10:16:21

标签: swift mapkit cloudkit

我想从当前登录的用户那里获取所有位置记录。

这将在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)
        }
    }
}

1 个答案:

答案 0 :(得分:1)

如果您的目标是保存用户的面包屑位置而不是将其共享给其他用户,那么请使用私有数据库。 像这样,您可以检索用户的所有位置记录。

如果要使用公共数据库,请将CKReference类型的条目添加到指向用户记录的位置记录中。这样您就可以使用基于用户recordID的谓词