NSArrayController setFetchPredicate
NSArrayController setFetchPredicate
我有一个简单的 CoreData
应用程序,它存储信息、姓名、日期等...并且一切正常。有一种搜索方法,它在 NSArrayController
上使用 setFetchPredicate
,结果出现在 table 中 - 这是可行的。
考虑在此方法的末尾添加一些附加代码,因此就在该方法结束之前,我添加了一行简单的代码来获取 NSArrayController 的计数。
[searchArrayController setFetchPredicate: searchPredicate];
[searchArrayController rearrangeObjects];
NSlog(@"Count = %lu", (unassigned long)[[searchArrayController arrangedObjects] count]);
结果:计数 = 1200
(1200是数据库中对象的数量。)
table 显示正确,即显示正确数量的数据对象,但是 NSLog
计数是整个数据库。
我在方法的开头放置了第二个 NSLog
。如果我 运行 第二次搜索,第二次 NSLog
显示正确的对象数。
Beginning method:
NSlog(@"A-Count = %lu", (unassigned long)[[searchArrayController arrangedObjects] count]);
...
[searchArrayController setFetchPredicate: searchPredicate];
[searchArrayController rearrangeObjects];
NSlog(@"B-Count = %lu", (unassigned long)[[searchArrayController arrangedObjects] count]);
end of method
结果:
第一个运行:
计数 = 1200
B 计数 = 1200
NSTable
显示正确的对象数
第二个运行:
A-Count = 4(这对于搜索参数是正确的)
B 计数 = 4
调用B-Count NSLog
时,虽然NSArrayController方法还没有根据谓词过滤,但第一次出现。但这是在方法的最后,此时应该过滤 NSArrayController。
我必须在这里遗漏一些简单的东西 - 任何帮助将不胜感激。
谢谢
rearrangeObjects
使用 filterPredicate
。 fetch
使用 fetchPredicate
但 fetch
被推迟到运行循环的下一次迭代。
我有一个简单的 CoreData
应用程序,它存储信息、姓名、日期等...并且一切正常。有一种搜索方法,它在 NSArrayController
上使用 setFetchPredicate
,结果出现在 table 中 - 这是可行的。
考虑在此方法的末尾添加一些附加代码,因此就在该方法结束之前,我添加了一行简单的代码来获取 NSArrayController 的计数。
[searchArrayController setFetchPredicate: searchPredicate];
[searchArrayController rearrangeObjects];
NSlog(@"Count = %lu", (unassigned long)[[searchArrayController arrangedObjects] count]);
结果:计数 = 1200
(1200是数据库中对象的数量。)
table 显示正确,即显示正确数量的数据对象,但是 NSLog
计数是整个数据库。
我在方法的开头放置了第二个 NSLog
。如果我 运行 第二次搜索,第二次 NSLog
显示正确的对象数。
Beginning method:
NSlog(@"A-Count = %lu", (unassigned long)[[searchArrayController arrangedObjects] count]);
...
[searchArrayController setFetchPredicate: searchPredicate];
[searchArrayController rearrangeObjects];
NSlog(@"B-Count = %lu", (unassigned long)[[searchArrayController arrangedObjects] count]);
end of method
结果:
第一个运行:
计数 = 1200
B 计数 = 1200
NSTable
显示正确的对象数
第二个运行:
A-Count = 4(这对于搜索参数是正确的)
B 计数 = 4
调用B-Count NSLog
时,虽然NSArrayController方法还没有根据谓词过滤,但第一次出现。但这是在方法的最后,此时应该过滤 NSArrayController。
我必须在这里遗漏一些简单的东西 - 任何帮助将不胜感激。
谢谢
rearrangeObjects
使用 filterPredicate
。 fetch
使用 fetchPredicate
但 fetch
被推迟到运行循环的下一次迭代。