iphone coredata 删除通过关系连接的两个实体之间的记录
Posted
技术标签:
【中文标题】iphone coredata 删除通过关系连接的两个实体之间的记录【英文标题】:iphone coredata removing records between two entities connected by relation ship 【发布时间】:2010-05-11 10:24:54 【问题描述】:我正在我的 iphone 应用程序中实现核心数据。它有两个实体。 实体1:最新数据 Entity2:LatestDetailedData
LatestData 具有 URL、publishDate、标题 LatestDetailedData 有 URL、NewsDescription、PublishedDate、Author
两个实体具有相同的记录 URL。 两个实体都以反向关系连接。并且关系是“delete->Cascaded”
我想要的:如果我删除了LatestData中的一条记录,我希望LatestDetailedData中具有相同URL的记录也必须被删除。
怎么做?
【问题讨论】:
【参考方案1】:如果我对您的理解正确,那么您使用的是一种关系,并且它具有相反的关系。如果是这种情况,那么当您删除一个时,Core Data 会自动删除另一个,您无需执行任何额外操作。
你看到什么表明没有发生?
更新
由于您使用多个线程,您是否每个线程使用一个NSManagedObjectContext
?如果是这样,您是否在保存时更新所有线程?我怀疑这两个中的一个没有发生,因此导致了您的问题。
【讨论】:
抱歉,我之前没有更新我正在从不同线程填充不同实例的实体。当我在一个实体中删除时,在具有相同 URL 的另一个实体中重新记录不是完全删除。【参考方案2】:当您创建实体时,您也需要创建关系
LatestDetailedData * entity2 = [[NSEntityDescription insertNewObjectForEntityForName:@"LatestDetailedData" inManagedObjectContext:context];
entity1.lastestdetail=entity2;
如果您只是依赖 URL 字段,那么这是不好的做法。在 coredata 中设置关系,级联删除将自行处理。
【讨论】:
但是我在不同的实例中填充了这两个实体。那么,如何在此处进一步进行。 假设您首先填充 entity1,当您填充 entity2 时,找到 enetity1(带有基于 url 的谓词)并创建关系。如果您在 coredata 知道的实体之间没有关系,则根本无法进行级联删除等操作。以上是关于iphone coredata 删除通过关系连接的两个实体之间的记录的主要内容,如果未能解决你的问题,请参考以下文章