无法使用 Swift 获取 userCKRecordID
Posted
技术标签:
【中文标题】无法使用 Swift 获取 userCKRecordID【英文标题】:Can't fetch userCKRecordID with Swift 【发布时间】:2016-11-28 20:10:05 【问题描述】:我收到错误消息:“'CKDatabase' 类型的值没有成员 'fetchUserRecordIDWithCompletionHandler'。”它是从最新版本的 Xcode 或 swift 3 中取出的吗?
func fetchUserRecords()
let publicDB = CKContainer.default().publicCloudDatabase
publicDB.fetchUserRecordIDWithCompletionHandler (userID, error) -> Void in
if let userID = userID
let reference = CKReference(recordID: userID, action: .None)
let predicate = NSPredicate(format: "creatorUserRecordID == %@", reference)
let query = CKQuery(recordType: "Location", predicate: predicate)
CKContainer.default().publicCloudDatabase.perform(query, inZoneWith: nil)
(records, error) in
if error != nil
print("error fetching user records: \(error)")
completion(error as NSError?, nil)
else
print("found user records")
completion(nil, records)
guard let records = records else
return
for record in records
//delete records
【问题讨论】:
查看CKContainer
的文档,而不是CKDatabase
。
我看了一下文档,改成“CKContainer.default().fetchUserRecordID”@rmaddy
【参考方案1】:
Swift 3 更改了许多函数调用的名称。新的函数签名是
func fetchUserRecordID(completionHandler: @escaping (CKRecordID?, Error?) -> Void)
编辑:
rmaddy 报告该函数是CKContainer
的函数,而不是CKDatabase
。
【讨论】:
您遗漏了真正重要的部分。这是CKContainer
的方法,而不是CKDatabase
。
我还将“publicDB.fetchUserRecordIDWithCompletionHandler...”更改为“CKContainer.default().fetchUserRecordID...”@Duncan C
@rmaddy,我从未使用过 CloudKit,所以我没有意识到这一点。不过我看到了你的评论...以上是关于无法使用 Swift 获取 userCKRecordID的主要内容,如果未能解决你的问题,请参考以下文章
无法在 swift 中使用 CLPlacemark 获取 subLocality
无法使用 Alamofire Swift 获取 Json 数据
无法从 UIDocumentPickerViewController ios swift 获取 .doc 文件