gpt4 book ai didi

ios - CKRecord 获取键的值

转载 作者:搜寻专家 更新时间:2023-10-31 19:31:28 24 4
gpt4 key购买 nike

我正在尝试根据用户的用户名获取用户的值。我能够使用以下方法获得正确的用户:

class func getByUsername(username: String, callback: (records: [CKRecord]) -> ()){
getSummary(NSPredicate(format: "Username == %@", username)){(records: [CKRecord]) -> Void in
callback(records: records)
}
}

class func getSummary(predicate: NSPredicate, callback: (records: [CKRecord]) -> ()){
let query = CKQuery(recordType: "UserInfo", predicate: predicate)
let queryOperation = CKQueryOperation(query: query)
queryOperation.desiredKeys = ["ID"]

var records = [CKRecord]()
queryOperation.recordFetchedBlock = {record in records.append(record)}
queryOperation.queryCompletionBlock = {_ in callback(records: records)}

CKContainer.defaultContainer().publicCloudDatabase.addOperation(queryOperation)
}

然后我可以通过调用获得正确的记录:

getByUsername("Username"){(records: [CKRecord]) -> Void in
var record: CKRecord = records[0]
}

我也可以通过使用获得正确的 ID

var id: String = record.recordID.recordName

所以我知道我正在获取正确的记录,但是,当我尝试从记录中获取值时,例如用户的电子邮件,nil 被返回:

var email: String = record.objectForKey("Email") as String

我也试过:

record.valueForKey("Email")
record.valueForKeyPath("Email")

当我打印 record.allKeys() 时,我得到一个空数组 [],当我打印 record.allTokens(),我得到了 nil

的返回

我是否没有正确地从记录中获取值,或者我是否必须使用记录 ID 查询数据库以获取我想要获取的每个值?基于什么the documentation说:

A CKRecord object is a dictionary of key-value pairs that you use to fetch and save the data of your app.

我会假设我不必为我想获得的每个值查询数据库,并且这些值会在从 iCloud 获取时自动插入到 CKRecord

最佳答案

当您省略该行时:

queryOperation.desiredKeys = ["ID"]

查询将返回所有字段。

您没有收到 ID 字段可能是因为它是一个可以使用访问的系统字段

var ID = record.recordID.recordName 

关于ios - CKRecord 获取键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27772210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com