0

我有一个 NSArrayController 绑定到我的托管对象上下文中的一个类。在运行时 NSArrayController 可以应用许多不同的过滤谓词。在某些时间间隔,我想遍历我的 NSArrayController 的内容,而不管应用到它的过滤谓词。

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

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

2 回答 2

4

您可以使用选择器从数组控制器中检索所有内容,而与应用的过滤谓词无关content

[myArrayController content]

您根本不需要重置过滤谓词。

于 2011-06-23T15:47:52.307 回答
0

如果您只对获取所有没有过滤器的 Foo 实例感兴趣,然后以编程方式遍历它们,为什么不直接使用 NSFetchRequest呢?

如果您仅要求控制器的 -arrangedObjects ,那么在您的 fetch 请求中使用排序描述符就很容易了。

于 2010-06-03T13:38:59.783 回答