CoreData上的setByAddingObject NSManagedObject关系不起作用

时间:2016-01-18 12:03:41

标签: ios objective-c core-data entity-relationship nsmanagedobject

我目前正在尝试更新我的代码以便更高效,为此我正在查看我的CoreData托管对象的更新功能。我有以下代码可以正常工作,但是,仪器中的Time Profiler显示关系的创建相当慢。两个对象都具有一对多的关系,因此具有我更新的集合如下:

NSMutableSet *labelSet = [NSMutableSet setWithSet:labelEntity.rTickets];
if (![labelSet containsObject:entity])
{
    [labelSet addObject:entity];
    [labelEntity setRTickets:labelSet];
}

NSMutableSet *ticketSet = [NSMutableSet setWithSet:[(TicketEntity *)entity rLabels]];
if (![ticketSet containsObject:labelEntity])
{
    [ticketSet addObject:labelEntity];
    [(TicketEntity *)entity setRLabels:ticketSet];
}

这一切都按预期工作,所有CoreData都保持正确,数据显示在另一个类的UITableView中。但是,我觉得使用下面更简洁的代码可以实现同样的目标:

if (![labelEntity.rTickets containsObject:entity])
     [labelEntity.rTickets setByAddingObject:entity];

if (![[(TicketEntity *)entity rLabels] containsObject:labelEntity])
     [[(TicketEntity *)entity rLabels] setByAddingObject:labelEntity];

由于某些原因,这不会按预期运行,所有实体关系都不会保持持久性。我错过了与此功能明显不同的东西吗?起初我想也许这个集合没有正确初始化,因此在{0}上调用了setByAddingObject,所以我尝试首先初始化集合,然后使用setByAddingObject所有后续请求,但这没有任何区别。任何人都可以让我知道为什么上面的第二个代码不起作用?或者是管理两个多NSManagedObjects之间关系的最佳方式。

由于

0 个答案:

没有答案