首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSArrayController setFetchPredicate

NSArrayController setFetchPredicate
EN

Stack Overflow用户
提问于 2016-08-18 00:57:12
回答 1查看 61关注 0票数 0

我有一个简单的CoreData应用程序,它存储信息,姓名,日期等…一切都在正常运行。有一个search方法,它使用NSArrayController上的setFetchPredicate并将结果显示在一个表中-这是有效的。

在此方法的末尾添加一些额外的代码,因此在方法结束之前,我添加了一行简单的代码来获取NSArrayController的计数。

代码语言:javascript
复制
  [searchArrayController setFetchPredicate: searchPredicate];

  [searchArrayController rearrangeObjects];

  NSlog(@"Count = %lu", (unassigned long)[[searchArrayController arrangedObjects] count]);

结果:计数= 1200

(1200是数据库中的对象数。)

该表显示正确,即显示正确的数据对象数量,但是NSLog计数是整个数据库。

我在方法的开头放置了第二个NSLog。如果我再次运行搜索,第二个NSLog将显示正确的对象数量。

代码语言:javascript
复制
  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

结果:

第一次运行:

A-计数= 1200

B-计数= 1200

NSTable显示正确的对象数量

第二次运行:

A-Count =4(这对于搜索参数是正确的)

B-计数=4

当调用B- NSArrayController NSLog时,它第一次出现,尽管该方法尚未基于谓词过滤计数。但这是在方法的末尾,应该在这一点上过滤NSArrayController。

我在这里遗漏了一些简单的东西-任何帮助都将不胜感激。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-18 04:48:18

rearrangeObjects使用filterPredicatefetch使用fetchPredicate,但fetch被推迟到运行循环的下一次迭代。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39002373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档