当前位置: 首页 > 面试题库 >

来自私有区域的CKQuery仅返回CloudKit中的前100个CKRecords

田成仁
2023-03-14
问题内容

Cloudkit 私有默认区域的查询结果是否有任何限制?我不知道为什么我只收到带有以下查询的前100条记录:

let p = NSPredicate(format: "(type == 'entered') AND (timestamp >= %@) AND (timestamp <= %@)", from, to)
let q = CKQuery(recordType: self.beaconRecordType, predicate: p)
q.sortDescriptors = [NSSortDescriptor(key: "timestamp", ascending: true)]
self.privateDatabase?.performQuery(q, inZoneWithID: nil, completionHandler: { results, error in

    //count = 100
    println(results.count)

}

好的。正如Edwin在回答中提到的那样,解决方案是使用CKQueryOperation来获取数据的初始块,然后在completeBlock中使用“游标”来触发另一个操作。这是一个例子:

更新

func fetchBeacons(from:NSDate, to:NSDate) {

    let p = NSPredicate(value: true)
    let q = CKQuery(recordType: self.beaconRecordType, predicate: p)

    let queryOperation = CKQueryOperation(query: q)

    queryOperation.recordFetchedBlock = fetchedARecord

    queryOperation.queryCompletionBlock = { [weak self] (cursor : CKQueryCursor!, error : NSError!) in

        if cursor != nil {
            println("there is more data to fetch")
            let newOperation = CKQueryOperation(cursor: cursor)
            newOperation.recordFetchedBlock = self!.fetchedARecord
            newOperation.queryCompletionBlock = queryOperation.queryCompletionBlock
            self!.privateDatabase?.addOperation(newOperation)
        }

    }

    privateDatabase?.addOperation(queryOperation)
}

var i = 0
func fetchedARecord (record: CKRecord!) {
    println("\(NSDate().timeIntervalSinceReferenceDate*1000) \(++i)")
}

问题答案:

标准查询的默认限制为100。该金额不是固定的。它可能会因iCloud的总负载而异。如果要影响该金额,则需要使用CKQueryOperation并按以下方式设置resultLimit:operation.resultsLimit
= CKQueryOperationMaximumResults;
该CKQueryOperationMaximumResults是默认值,它将限制为100(大多数情况下)。不要将该值设置得太高。如果需要更多记录,请使用queryCompletionBlock的光标继续读取更多记录。



 类似资料:
  • 问题内容: 我们已经成功地将v2 QBO迁移到v3,在生产之后,我们从一位客户那里遇到了问题。他们在QBO帐户中拥有超过100个客户。他们想将它们复制到我们的应用程序中。我们实现了这样的导入: 如《类库参考》中所述 -方法findAll是一个 但是我们的客户从其QBO v3帐户中 仅 获得 前100个实体 (客户)。如果他执行相同的导入操作- 他将再次获得相同的前100个实体。此方法不允许使用任何

  • 我有一个带有私有属性的类,它是一个向量。做getter函数的最佳方法是什么? 返回整个向量:

  • oracle DB是否能够返回时区区域,例如欧洲/伦敦,而不仅仅是偏移?我想知道服务器所在的地区名称。 从DUAL中选择SYSTIMESTAMP参数;返回日期、时间和偏移量: 从dual中选择DBTIMEZONE;返回偏移量:

  • 问题内容: 我有一个元组,有100个姓氏。我如何在sqlite3中执行以下操作: 这样我就可以返回中包含的姓氏的所有记录。 问题答案: 问题 :返回所有记录中包含的姓氏 核心是创建一个查询,该查询具有与序列中一样多的绑定。 在需要排除最后一个逗号。 SQLite理解的SQL-子句 bindings = ‘?,’*len(surnames) QUERY = “select firstname, su

  • 我试图利用WordPress的admin-ajax特性来为一个插件构建一个动态管理面板选项集。从本质上讲,一旦从下拉菜单(Select/option menu)中选择了一个选项,PHP函数就会对下拉菜单进行排序,并显示更多下拉菜单,这些下拉菜单位于下拉菜单的上方。我从一个简单的返回开始,我希望在后面使用这个返回,但是我似乎无法将文本打印出来而不遇到问题。 我设置的AJAX显示了200状态,但响应从

  • 我有一条可以观察到的溪流。第一个运算符是一个mergeMap,它返回一个可观察的数组。然后,我必须有第二个mergeMap从第一个mergeMap的返回中获取最终值。我觉得这第二个合并映射应该是不必要的,但找不到绕过它的方法。 例子: 这最终是我所拥有的。第二个mergeMap只存在于订阅第一个的输出。没有它,我的输出是可观察的(即(1)的