无法使用 Swift 获取 userCKRecordID
Can't fetch userCKRecordID with Swift
我收到错误消息:"Value of type 'CKDatabase' has no member '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
}
}
}
}
}
}
Swift 3 更改了很多函数调用的名称。新的函数签名是
func fetchUserRecordID(completionHandler: @escaping (CKRecordID?, Error?) -> Void)
编辑:
rmaddy 报告该函数是 CKContainer
的函数,而不是 CKDatabase
。
我收到错误消息:"Value of type 'CKDatabase' has no member '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
}
}
}
}
}
}
Swift 3 更改了很多函数调用的名称。新的函数签名是
func fetchUserRecordID(completionHandler: @escaping (CKRecordID?, Error?) -> Void)
编辑:
rmaddy 报告该函数是 CKContainer
的函数,而不是 CKDatabase
。