核心数据性能:在willSave中建立关系:

时间:2015-07-03 01:02:42

标签: objective-c core-data

我有3个实体:

<div style="width:100px;"> <img class="img-responsive" src="https://placehold.it/350x150"/> </div> Ticket Event

宾客有很多门票。门票有一位客人。

活动有很多门票。

一个事件有很多来宾,一个客人有很多事件(基于一个Ticket实体是clientDeleted = NO)

对于我在Guest上的获取请求,我曾经在谓词上有一个SUBQUERY:

Guest

为五张数字的门票工作得很好。我需要有效地做100,000以上。

现在我有一个想法进行优化:Denormalize以删除SUBQUERY:

NSPredicate predicateWithFormat:@"SUBQUERY(tickets, $ticket, $ticket.clientDeleted = NO AND $ticket.event = %@).@count > 0", event]

我可以通过在Ticket.willSave核心数据挂钩中建立Guest&lt; - &gt;事件关系来实现这一点:

[NSPredicate predicateWithFormat:@"ANY events = %@", event"];

Guest.m:

- (void)willSave
{
  [super willSave];
  if (self.guest) {
    [self.guest updateEventRelationship:self.event];
  }
}

这是有效的,但我使用Instruments对它进行了一些时间分析...而且在containsObject调用期间它非常慢。有没有更好的地方我可以将此代码放在模型级别更快?特别是批量导入票时?

0 个答案:

没有答案