Ios Can';基于Cloudkit中用户ID的t查询
我不明白为什么我的ckquery没有获取用户创建的记录。这是我的密码:Ios Can';基于Cloudkit中用户ID的t查询,ios,swift,cloudkit,ckquery,Ios,Swift,Cloudkit,Ckquery,我不明白为什么我的ckquery没有获取用户创建的记录。这是我的密码: @IBAction func browseMyComplaints(sender: AnyObject) { // who am i? CKContainer.defaultContainer().fetchUserRecordIDWithCompletionHandler({ userRecordID, error in if error == nil { print
@IBAction func browseMyComplaints(sender: AnyObject) {
// who am i?
CKContainer.defaultContainer().fetchUserRecordIDWithCompletionHandler({ userRecordID, error in
if error == nil {
println(userRecordID.description)
let query:CKQuery = CKQuery(recordType: "myComplaint", predicate: NSPredicate(format: "creatorUserRecordID = %@", userRecordID))
var results : [CKRecord] = [CKRecord]()
var operation : CKQueryOperation = CKQueryOperation(query: query)
operation.recordFetchedBlock = { (record:CKRecord!) -> Void in
results.append(record)
}
operation.queryCompletionBlock = {
(cursor:CKQueryCursor!, error:NSError!) in
if (error != nil) {
NSLog(error.description)
} else {
NSLog("no query error reported")
NSLog(String(results.count) + " found")
tvComplaintRecords = results
self.performSegueWithIdentifier("complaintList", sender: self)
}
}
publicDatabase.addOperation(operation)
} else {
println("Can not identify user due to error: \(error.localizedDescription)")
}
})
}
我的输出是:
<CKRecordID: 0x7be3f220; _46761404769b094e82053fea39b16bb5:(_defaultZone:__defaultOwner__)>
2014-10-11 12:45:32.597 ReportAMenace[15244:781048] no query error reported
2014-10-11 12:45:32.597 ReportAMenace[15244:781048] 0 found
2014-10-11 12:45:32.597 ReportAMenace[15244:781048]未报告任何查询错误
2014-10-11 12:45:32.597发现报告地址[15244:781048]0
但是有11条记录,包括我在运行上面的查询之前创建的1条记录。有什么提示吗?您可以创建一个CKQuery来搜索记录ID,如下所示:
var query = CKQuery(recordType: recordType, predicate: NSPredicate(format: "%K == %@", "creatorUserRecordID" ,CKReference(recordID: userRecordID, action: CKReferenceAction.None)))
我知道了。当然,有一个简单的答案,尽管即使这样也不完全是直截了当的 我必须进入Cloudkit仪表板(在线网站),确保creator字段等的查询标志设置为yes
然而,即使在那时,旧的也没有出现(如果Cloudkit进行某种批量整夜索引,可能以后会出现,不确定)。但从那一刻起,它确实对新的唱片起了作用。我知道你是对的,但它就是不起作用。我不明白。我的其他问题很好。println(userRecordID.description)var query=CKQuery(recordType:“myComplaint”,谓词:NSPredicate(格式:“%K==%”,“%creatorUserRecordID”,CKReference(recordID:userRecordID,action:CKReferenceAction.None)))啊,我以前也有过类似的问题。我希望苹果能让所有元数据字段在默认情况下都可以搜索和排序。或者通过代码向CloudKit添加功能,我同意。旧唱片从未出现过。如果您已经拥有一个大型数据集,并且需要打开标志进行额外的开发,那么这将非常糟糕。