【问题标题】:Get number of objects in a Core Data relationship获取核心数据关系中的对象数量
【发布时间】:2023-04-11 07:58:02
【问题描述】:

我有一个带有食谱的表格视图。用户可以添加和删除配方。 当一个菜谱被点击时,另一个 tableview 被推送,并显示成分。同样在这里,用户可以添加和删除成分。

配方和成分之间存在一对多关系。

我想在配方表视图行中显示成分的数量。我知道如何在界面生成器中使用行进行设置,但我不知道如何获取单个配方的成分计数。

这可能吗?

【问题讨论】:

    标签: iphone core-data


    【解决方案1】:

    使用 countForFetchRequest 而不是 executeFetchRequest 并且(对于 SQL 支持的存储)它将执行 COUNT 而不是 SELECT。

    【讨论】:

      【解决方案2】:

      如果您使用的是核心数据,您可以通过调用 count 方法询问成分列表其中包含多少成分:

      - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
          int count = [recipe.ingredients count];
          return count;
      }
      

      您可以通过查看NSSet class in the documentation了解集合类具有哪些属性和方法。

      通过查看核心数据创建的生成类,我找到了要查看的类:

      @class ParentObject;
      @interface ParentObject :  NSManagedObject  
      {
      }
      @property (nonatomic, retain) NSString * name;
      @property (nonatomic, retain) NSSet* childObjects;
      @end
      

      【讨论】:

      • 由于 OP 已经有配方对象,这是最简单的答案。
      【解决方案3】:

      只需使用允许所有匹配项的谓词获取所有成分。这个NSFetchRequest 将在执行时返回一个NSArray。只需执行[myArray count] 即可获取成分数量。

      【讨论】:

      • 只是为了计数而做的工作(对象创建等)不是太多了吗?
      • 也许还有其他方法可以在不创建任何对象的情况下访问数据存储。请张贴替代品。我自己也很好奇。
      • 实际上,这是一个关于这个主题的 SO 问题:stackoverflow.com/questions/1134289/…
      • 由于Recipe对象已经在内存中,最简单的方法是向上面Helephant提到的询问关系的计数。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-08
      • 1970-01-01
      • 2014-07-10
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多