如何在CloudKit中向现有记录添加字段

时间:2017-08-21 15:23:28

标签: swift cloudkit ckrecord ckmodifyrecordsoperation

我有一个函数可以将用户名输入到CloudKit中的新记录名中(如下所示),但我还需要将用户的分数添加到同一记录中。

有没有办法通过引用其唯一的'recordName'值来插入另一个字段“usersScore”?

/// 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!
}

1 个答案:

答案 0 :(得分:1)

要输入多个记录,最好使用CKModifyRecordsOperation。 我是怎么做到的......

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))

}