gpt4 book ai didi

objective-c - 核心数据: How to count entities in a one-to-many relationship with a specific attribute value?

转载 作者:行者123 更新时间:2023-12-03 16:18:57 25 4
gpt4 key购买 nike

这是我的数据模型的示例:

  • 有邮箱
  • 每个邮箱有很多邮件
  • 每条消息都有一个标志来指示是否未读

如何计算特定邮箱的未读邮件数量?

我尝试在数据模型编辑器中创建提取请求,但无法为邮箱添加条件,尽管消息实体具有为其所属邮箱定义的关系。

我知道在处理核心数据时我不应该用 SQL 来思考,但感觉很自然,所以说:

SELECT count(*) FROM Messages WHERE unread = 1 AND mailboxId = 12345

除了循环遍历特定邮箱的每封邮件之外,还有其他方法来获取未读邮件计数吗?

最佳答案

您想在不获取对象的情况下进行计数,因为这会花费更长的时间:

- (NSUInteger)countForFetchRequest:(NSFetchRequest *)request error:(NSError **)error

返回给定获取请求在传递给executeFetchRequest时将返回的对象数量:错误:

您还需要向提取请求添加谓词(即 WHERE 子句)。

例如

NSFetchRequest * request = [[NSFetchRequest alloc] init];
[request setEntity: [NSEntityDescription entityForName:@"Messages" inManagedObjectContext:context]];
[request setPredicate:[NSPredicate predicateWithFormat: @"(unread == 1 && mailboxId == %i)", mailboxId]];

(我的谓词语法可能错误......但你应该明白)

关于objective-c - 核心数据: How to count entities in a one-to-many relationship with a specific attribute value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8894318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com