CloudKit ___recordID 未标记为可查询
Posted
技术标签:
【中文标题】CloudKit ___recordID 未标记为可查询【英文标题】:CloudKit ___recordID is not marked queryable 【发布时间】:2015-05-20 06:43:40 【问题描述】:我尝试以编程方式成功将数据保存到 CloudKit,但从 CloudKit 获取数据时出现错误
我遇到了一个错误
> <CKError 0x608000052060: "Invalid Arguments" (12/2015); server message
> = "Field '___recordID' is not marked queryable"; uuid = 19F1E556-5384-42FD-8F65-9FD8A9C9523D; container ID =
> "iCloud.com.mywebsite.CloudDemo">
这是我的代码。
func saveNewRecordTypeToCloud()
// Prepare the record to save
var record = CKRecord(recordType: "Members")
record.setValue("test", forKey: "name")
record.setValue("test", forKey: "surname")
// Get iCloud Database
let cloudContainer = CKContainer.defaultContainer()
let database = CKContainer.defaultContainer().privateCloudDatabase
// Save the record to iCloud
database.saveRecord(record, completionHandler: (record:CKRecord!, error:NSError! ) in
if error != nil
NSLog(error.localizedDescription)
else
dispatch_async(dispatch_get_main_queue())
println("finished")
)
func getRecordsFromCloud()
// Fetch data using Convenience API
let cloudContainer = CKContainer.defaultContainer()
let publicDatabase = CKContainer.defaultContainer().privateCloudDatabase
let predicate = NSPredicate(value: true)
let sort = NSSortDescriptor(key: "creationDate", ascending: false)
let query = CKQuery(recordType: "Members", predicate: predicate)
query.sortDescriptors = [sort]
publicDatabase.performQuery(query, inZoneWithID: nil, completionHandler:
results, error in
if error == nil
self.members = results as! [CKRecord]
println(self.members)
else
println(error)
)
为了解决这个问题,我不得不通过Web DashBoard设置元数据索引,但我想知道我是否可以通过代码设置元数据索引?
如果有,请给我一些代码示例。
感谢您的所有回答。
【问题讨论】:
【参考方案1】:抱歉,无法从代码中设置索引。您必须在 CloudKit 仪表板中执行此操作。
【讨论】:
感谢埃德温·维米尔的回答 好的,我将其作为已接受的答案,但它真的仍然是真的吗?以上是关于CloudKit ___recordID 未标记为可查询的主要内容,如果未能解决你的问题,请参考以下文章
如何在 CloudKit 中查询 recordID [CKRecordID]
CKReferences 未出现在 CloudKit 仪表板中
如何使用 NSPredicate 和 CloudKit 获取特定用户的最新帖子?