Cocoa 暂时禁用NSArrayController筛选器预测,或咨询ManagedObjectContext?

Cocoa 暂时禁用NSArrayController筛选器预测,或咨询ManagedObjectContext?,cocoa,core-data,nsarraycontroller,Cocoa,Core Data,Nsarraycontroller,我有一个NSArrayController,它绑定到托管对象上下文中的类。在运行期间,NSArrayController可以应用许多不同的筛选器谓词。在特定的时间间隔内,我希望遍历NSArrayController的内容,而不考虑应用于它的筛选器谓词 为此,我将filterPredicate设置为nil,然后在遍历数组后将其恢复。这似乎有效,但我想知道这是否是最佳实践?我应该手动轮询我的托管对象上下文吗 NSPredicate *predicate = nil; predicate = [myA

我有一个NSArrayController,它绑定到托管对象上下文中的类。在运行期间,NSArrayController可以应用许多不同的筛选器谓词。在特定的时间间隔内,我希望遍历NSArrayController的内容,而不考虑应用于它的筛选器谓词

为此,我将filterPredicate设置为nil,然后在遍历数组后将其恢复。这似乎有效,但我想知道这是否是最佳实践?我应该手动轮询我的托管对象上下文吗

NSPredicate *predicate = nil;
predicate = [myArrayController filterPredicate];
[myArrayController setFilterPredicate:nil];
for(MyManagedObject *object in [myArrayController arrangedObjects]) {
    // ...
}
[myArrayController setFilterPredicate:predicate];

如果您只想获取所有没有过滤器的Foo实例,然后以编程方式对它们进行迭代,为什么不直接进行呢


如果您只需要控制器的-ArrangedObject,那么在获取请求中使用排序描述符就很容易了。

如果您只想获取所有没有过滤器的Foo实例,然后以编程方式迭代它们,为什么不直接呢


如果您单独请求控制器的-ArrangedObject,那么在获取请求中使用排序描述符就很容易了。

您可以使用
内容
选择器从数组控制器中检索所有内容,而不依赖于应用的筛选谓词:

[myArrayController content]

您根本不需要重置筛选器谓词。

您可以使用
内容
选择器从数组控制器检索所有内容,而不依赖于应用的筛选器谓词:

[myArrayController content]
您根本不需要重置过滤器谓词