我遇到了一个问题,我确实解决了这个问题,但我觉得它效率很低,它涉及遍历Core Data(用于iOS)父/子引用的实体层次来计算附加到某些实体的项目数量。实体层次结构中的计数项
让我更具体。我有两种类型的实体:Category
和Attachment
。
Category
实体通过父/子引用链接。附件与Categories
作为多对一(许多附件到一个类别)链接。
如果我想要计算给定Category
的层次结构内的附件数量,是否有NSFetchRequest
我可以做的比这更有效?
NSInteger count = 0;
NSMutableArray *stack = [[NSMutableArray alloc] init];
[stack addObject:targetCategory];
while([stack count] > 0)
{
Category *current = [stack lastObject];
[stack removeLastObject];
count += current.attachments.count;
for (Category *cat in current.children)
{
[stack addObject:cat];
}
}
targetCategory
是选择的根类别。
在此先感谢。
它可以在SQL中以某种方式完成吗?如果是这样,是否有可能将其移植到获取请求? – 2013-02-19 06:25:01
或者也许有另一种可以用来查看数据的范例? – 2013-02-19 06:25:31
@dandrejvv:直接访问SQLite存储是危险的,因为格式没有正式记录,并且可能随时更改。你会有缓存问题。核心数据是对象图形管理器,而不是数据库,所以您应该考虑具有关系而不是数据库记录的对象。 - 我不知道如何更有效地解决您的问题。你有几个类别?遍历树真的是一个性能问题吗? – 2013-02-19 08:02:32