I have a function to input a users name into a new recordName in CloudKit (shown below), however I also need to add the users 'score' into the same record.
Is there a way to insert another field "usersScore" by referencing its unique 'recordName' value?
/// INSERT NEW ENTRY TO DB.
func insertName(nameEntry: String) -> CKRecordID {
// Connects to the user database table.
let userTable = CKRecord(recordType: "User")
// Connects the Database to the public container.
let publicData = CKContainer.default().publicCloudDatabase
// Adds the users entry into the "name" field.
userTable["name"] = nameEntry as NSString
// If the record has saved or an error has occurred.
publicData.save(userTable) { (record, error) in
if let saveError = error {
//Error.
print("An error occurred in \(saveError)")
}else {
// Success.
print("Saved Record!")
}
}
// RecordName (ID) of the current user.
recordNameID = userTable.recordID
return recordNameID!
}
To enter multiple records it's better to useCKModifyRecordsOperation
.
Here's how I did it...
func insertItems(nameEntry: String) {
// Creates a record name based on name passed into function.
let userNamesID = CKRecordID(recordName: "\(nameEntry)")
// Inserts name into the User table.
let userName = CKRecord.init(recordType: "User", recordID: userNamesID)
// Adds the users entry into the "name" field along with score and the amount of questions answered.
userName["Name"] = nameEntry as CKRecordValue
userName["Score"] = questionsCorr as CKRecordValue
userName["Questions_Answered"] = questionsAns as CKRecordValue
// Insert all records into the database.
publicDatabase.add(CKModifyRecordsOperation.init(recordsToSave: [userName], recordIDsToDelete: nil))
}