如何向 CloudKit 中的现有记录添加字段
Posted
技术标签:
【中文标题】如何向 CloudKit 中的现有记录添加字段【英文标题】:How to add fields to existing records in CloudKit 【发布时间】:2017-08-21 15:23:27 【问题描述】:我有一个功能可以将用户名输入到 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!
【问题讨论】:
你说的是 CKReference 吗? 【参考方案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))
【讨论】:
以上是关于如何向 CloudKit 中的现有记录添加字段的主要内容,如果未能解决你的问题,请参考以下文章
如何使用objective-c从CloudKit中的资产字段中检索图像