如何使用查询快速获取 cloudkit 数据
Posted
技术标签:
【中文标题】如何使用查询快速获取 cloudkit 数据【英文标题】:How to use query to fetch cloudkit data in swift 【发布时间】:2016-08-17 18:37:45 【问题描述】:我试图将所有用户的位置存储在cloudkit
中,然后由每个设备下载。我在storeLocation
的代码上标记了错误:
“无法将类型 '(NSError?, [CKRecord]?)' (aka '(Optional, Optional>)') 的值转换为预期的参数类型 '(error: NSError?, records: [CKRecord]?) - > 无效'"
//saves location in cloud kit //currently works well:
var locArray = [CKRecord]()
func storeLocation(location:CLLocation)
let locationRecord = CKRecord(recordType: "location")
locationRecord.setObject(location, forKey: "location")
let publicData = CKContainer.defaultContainer().publicCloudDatabase
publicData.saveRecord(locationRecord) (records, error) in
if error != nil
print("error saving locations: \(error)")
else
print("Locations saved: \(records)")
loadLocation((error, self.locArray)) //where I get error******
//fetches location from cloud kit:
func loadLocation(completion: (error:NSError?, records:[CKRecord]?) -> Void)
let query = CKQuery(recordType: "Location", predicate: NSPredicate(value: true))
CKContainer.defaultContainer().publicCloudDatabase.performQuery(query, inZoneWithID: nil)
(records, error) in
if error != nil
print("error fetching locations")
completion(error: error, records: nil)
else
print("found locations: \(records)")
completion(error: nil, records: records)
【问题讨论】:
我在你原来的问题@caleb 上回答了这个问题。 :) 【参考方案1】:我相信而不是:
loadLocation((error, self.locArray))
你需要这样称呼:
loadLocation() (error, records) in
// do something here with the returned data.
【讨论】:
以上是关于如何使用查询快速获取 cloudkit 数据的主要内容,如果未能解决你的问题,请参考以下文章
我如何通过其记录名称查询 CloudKit 以获取特定记录?