【发布时间】:2023-04-11 07:58:02
【问题描述】:
我有一个带有食谱的表格视图。用户可以添加和删除配方。 当一个菜谱被点击时,另一个 tableview 被推送,并显示成分。同样在这里,用户可以添加和删除成分。
配方和成分之间存在一对多关系。
我想在配方表视图行中显示成分的数量。我知道如何在界面生成器中使用行进行设置,但我不知道如何获取单个配方的成分计数。
这可能吗?
【问题讨论】:
我有一个带有食谱的表格视图。用户可以添加和删除配方。 当一个菜谱被点击时,另一个 tableview 被推送,并显示成分。同样在这里,用户可以添加和删除成分。
配方和成分之间存在一对多关系。
我想在配方表视图行中显示成分的数量。我知道如何在界面生成器中使用行进行设置,但我不知道如何获取单个配方的成分计数。
这可能吗?
【问题讨论】:
使用 countForFetchRequest 而不是 executeFetchRequest 并且(对于 SQL 支持的存储)它将执行 COUNT 而不是 SELECT。
【讨论】:
如果您使用的是核心数据,您可以通过调用 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
【讨论】:
只需使用允许所有匹配项的谓词获取所有成分。这个NSFetchRequest 将在执行时返回一个NSArray。只需执行[myArray count] 即可获取成分数量。
【讨论】: