Ich versuche, einen vorhandenen Datensatz in CloudKit zu aktualisieren, aber ich erstelle einen neuen Datensatz, anstatt den Wert zu ändern! Hier ist der Code:Wie aktualisiere ich ein Feld für einen Datensatztyp in CloudKit?
func pairing(phone: String, ctid: String) {
ctUsers = [CKRecord]()
print("THE PHONE IS: \(phone)\n")
let publicData = CKContainer.default().publicCloudDatabase
let predicate = Predicate(format: "phone == %@", phone)
let query = CKQuery(recordType: "Elder", predicate: predicate)
publicData.perform(query, inZoneWith: nil) { (results: [CKRecord]?, error: NSError?) -> Void in
if error != nil {
print(error?.localizedDescription)
}
if let users = results {
self.ctUsers = users
print("\nHow many users in cloud: \(self.ctUsers.count)\n")
if self.ctUsers.count != 0 {
let user = CKRecord(recordType: "Elder")
user["careTakerId"] = ctid
let publicData = CKContainer.default().publicCloudDatabase
publicData.save(user, completionHandler: { (record: CKRecord?, error: NSError?) in
if error == nil {
DispatchQueue.main.asynchronously(execute: {() -> Void in
print("CARETAKER updated successfully\n")
})
}
else {
print("\nHUEHUEHUEHUE\n")
print(error?.localizedDescription)
}
})
}
else {
print("\nELDER ISN'T IN CLOUD\n")
print(error?.localizedDescription)
}
}
}
}
Kurze Erklärung: Zuerst Ich erhalte die ältere Telefonnummer (jeder älteren hat ein anderes Telefon) und prüfen, ob diese Telefonnummer in der Wolke ist. Wenn es ist, dann aktualisiert die careTakerId von diesem Ältesten, speziell!
Hier können Sie sehen, dass sich dieses „No Name“ Datensatz erstellt und der Datensatz oben bleibt unverändert
Irgendwelche Ideen?
Oh, und nicht die Syntax nichts, ich bin Xcode 8 Beta 2 –