Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Can';基于Cloudkit中用户ID的t查询_Ios_Swift_Cloudkit_Ckquery - Fatal编程技术网

Ios Can';基于Cloudkit中用户ID的t查询

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

我不明白为什么我的ckquery没有获取用户创建的记录。这是我的密码:

@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添加功能,我同意。旧唱片从未出现过。如果您已经拥有一个大型数据集,并且需要打开标志进行额外的开发,那么这将非常糟糕。