- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我执行查询操作时,尽管 cloudkit 仪表板中只有 501 条记录,但我得到了大约 1542 个结果(全部重复)。
这是我的代码:
func queryForTable() -> Void {
self.arrayOfFoodItems.removeAllObjects()
let container = CKContainer.defaultContainer()
let resultPredicate = NSPredicate(format: "TRUEPREDICATE")
let query = CKQuery(recordType: "FoodItems", predicate: resultPredicate)
let queryOp = CKQueryOperation(query: query)
let operationQueue = NSOperationQueue()
executeQueryOperation(queryOp, onOperationQueue: operationQueue)
}
func executeQueryOperation(queryOperation: CKQueryOperation, onOperationQueue operationQueue: NSOperationQueue){
queryOperation.database = CKContainer.defaultContainer().publicCloudDatabase
queryOperation.recordFetchedBlock = self.addRecordToArray
queryOperation.queryCompletionBlock = { (cursor: CKQueryCursor?, error: NSError?) -> Void in
if cursor != nil {
if let queryCursor = cursor{
let queryCursorOperation = CKQueryOperation(cursor: queryCursor)
self.executeQueryOperation(queryCursorOperation, onOperationQueue: operationQueue)
}
}
else {
self.sortToSectionsAndReloadData()
}
}
operationQueue.addOperation(queryOperation)
}
如何解决这个问题?非常感谢!
更新:这是我正在使用的其他两个函数。正如评论中所述,我在 viewDidLoad 中调用 queryForTable()。
func sortToSectionsAndReloadData() {
for (var i = 0; i < self.arrayOfSections.count; i++) {
self.arrayOfArrays[i].removeAllObjects()
let prefix:String = self.arrayOfSections[i]
let array:NSMutableArray = self.arrayOfArrays[i] as! NSMutableArray
for object in self.arrayOfFoodItems {
let name = object["itemName"] as! String
if name.lowercaseString.hasPrefix(prefix.lowercaseString) {
array.addObject(object)
}
}
}
NSOperationQueue.mainQueue().addOperationWithBlock { () -> Void in
self.tableView.reloadData()
}
}
func addRecordToArray (record: CKRecord!) {
self.arrayOfFoodItems.addObject(record)
let recordItemName = record["itemName"]
print("\(recordItemName)")
}
最佳答案
对于每个queryCompletionBlock,您将收到获取到光标的所有记录。因此,第一个查询您将得到大约 100 条记录的结果,然后是 200 条记录,然后是 300 条记录,然后是 400 条记录,然后是 500 条记录。在您的情况下,您每次都将这些记录添加到结果中。如果将这些加起来,最终会得到 1500 条记录。因此,您不应将结果添加到数据数组中,而应该用结果替换数据数组。
关于Swift CloudKit QueryOperation 重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35680538/
当我执行查询操作时,尽管 cloudkit 仪表板中只有 501 条记录,但我得到了大约 1542 个结果(全部重复)。 这是我的代码: func queryForTable() -> Voi
Query.QueryOperator.AND_Field我们在 Tridion R5.3 VBscript 模板中使用了这种方法,效果很好。最近,在迁移到Tridion 2011 SP1时,我们尝试
我在 Cloudkit 的数据库中有多个 CKRecords。我将这些 CKRecords 转换为我的 map 的注释。自从我不得不在我的查询操作中的变量 var annotation = MKPoi
我是一名优秀的程序员,十分优秀!