仍然在我的RSS阅读器开发中,我使用以下模型:
Categorie -> Feed -> Post
对于我的主视图控制器,我想在类别名称旁边显示未读帖子的数量(read
NSDate为nil
的帖子。)
由于我需要一个NSFetchResultsController来选择类别,我还需要另一个来获得Category.feeds.posts.read == nil
计数吗?
你会怎么做?
答案 0 :(得分:2)
不,您不需要单独的获取结果控制器。
我理解你的问题的方式:你想要显示一个类别列表。对于每个类别名称,您要显示未读消息的数量。
我会像你这样在你的Category
类中实现一个fetched属性。
@implementation Category ()
-(NSUInteger)unreadMessages {
NSUInteger count = 0;
for (Feed *feed in self.feeds) {
NSSet *posts = [feed.posts filteredSetUsingPredicate
[NSPredicate predicateWithFormat:@"read = null"]];
count += posts.count
}
return count;
}
@end
我认为,如果你要将一个标志属性unread
(重命名为read
改为firstReadDate
)并将默认设置为1
以便发布,那将会更有效率:
for (Feed *feed in self.feeds) {
count += [[feed.posts valueForKeyPath:@"@sum.unread"] integerValue];
}