Tag: nspredicate

私有区域的CKQuery只返回来自CloudKit的前100条CKRecords

对Cloudkit私有默认区域的查询结果是否有限制? 我不知道为什么我只收到前100个logging与以下查询: 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在答案中提到的,解决scheme是使用CKQueryOperation获取数据的初始块,然后使用completionBlock中的“游标”来触发另一个操作。 这里是一个例子: UPDATE func fetchBeacons(from:NSDate, to:NSDate) { let p […]

在NSPredicate中结合“AND”和“OR”条件

再次需要更多的帮助,构build我的NSPredicates 🙁 Category { name:string subs<–>>SubCategory } SubCategory { name:string numbervalue:NSNumber } 我想知道如何用AND和OR创build一个谓词。 例如,我想返回每个类别的名称==“category_name”,也有一个数值为“valueA” 或 “valueB”的子类别。 我已经尝试了所有可能的谓词构造方法的组合,但是我只是无法让它工作。 这是迄今为止我最好的尝试。 NSPredicate *predicate=[NSPredicate predicateWithFormat@"(name== %@) AND (ANY subs.numbervalue==%@ OR ANY subs.numbervalue==%@)", @"aname", value1, value2]; 编辑1 第二次尝试。 对“numbervalue”的过滤仍然不起作用。 NSNumber valueA=[NSNumber numberWithInt:20]; NSNumber valueA=[NSNumber numberWithInt:90]; NSArray *arr=[NSArray arrayWithObject:valueA,valueB,nil]; predicate=[NSPredicate predicateWithFormat:@"(name==%@)AND(ANY subs.numbervalue IN %@)",@"aname",arr]; 编辑2 我已经尝试通过numberValue进行过滤,并将名称全部留下。 1)使用这个结果会导致整个集合被返回,即使集合中只有一个项目具有该值。 predicate=[NSPredicate predicateWithFormat:@"(ANY subs.numbervalue IN […]

具有谓词的NSFetchedResultsController忽略从不同NSManagedObjectContext合并的更改

我使用NSFetchedResultsController呈现表视图内容,它有一个谓词: [NSPredicate predicateWithFormat:@"visible == %@", [NSNumber numberWithBool:YES]] 在使用单独NSManagedObjectContext后台线程上,我更新了一些实体,并将其visible值从NO更改为YES 。 保存,合并主线程的NSManagedObjectContext更改。 但fetchedObjects不会改变。 另外控制器不会在-controller:didChangeObject:…上调用-controller:didChangeObject:… 如果实体在主线程上以相同的方式更新(我的testing应用程序调用相同的方法),一切都按预期工作。 另外通知的NSUpdatedObjectsKey包含这些对象。 目前唯一的解决scheme是find每个NSUpdatedObjectsKey实体: NSManagedObjectContext *context = … // main thread context [context existingObjectWithID:[object objectID] error:nil] 此问题仅适用于以前与谓词不匹配的更新对象。 我错过了什么明显的?