【问题标题】:iphone coredata removing records between two entities connected by relation shipiphone coredata 删除通过关系连接的两个实体之间的记录
【发布时间】:2010-05-11 10:24:54
【问题描述】:

我正在我的 iphone 应用程序中实现核心数据。它有两个实体。 实体1:最新数据 Entity2:LatestDetailedData

LatestData 具有 URL、publishDate、标题 LatestDetailedData 有 URL、NewsDescription、PublishedDate、Author

两个实体具有相同的记录 URL。 两个实体都以反向关系连接。并且关系是“delete->Cascaded”

我想要的:如果我删除了LatestData中的一条记录,我希望LatestDetailedData中具有相同URL的记录也必须被删除。

怎么做?

【问题讨论】:

    标签: ios iphone cocoa-touch core-data records


    【解决方案1】:

    如果我对您的理解正确,那么您使用的是一种关系,并且它具有相反的关系。如果是这种情况,那么当您删除一个时,Core Data 会自动删除另一个,您无需执行任何额外操作。

    你看到什么表明没有发生?

    更新

    由于您使用多个线程,您是否每个线程使用一个NSManagedObjectContext?如果是这样,您是否在保存时更新所有线程?我怀疑这两个中的一个没有发生,因此导致了您的问题。

    【讨论】:

    • 抱歉,我之前没有更新我正在从不同线程填充不同实例的实体。当我在一个实体中删除时,在具有相同 URL 的另一个实体中重新记录不是完全删除。
    【解决方案2】:

    当您创建实体时,您也需要创建关系

    LatestDetailedData * entity2 = [[NSEntityDescription insertNewObjectForEntityForName:@"LatestDetailedData" inManagedObjectContext:context]; 
    entity1.lastestdetail=entity2;
    

    如果您只是依赖 URL 字段,那么这是不好的做法。在 coredata 中设置关系,级联删除将自行处理。

    【讨论】:

    • 但是我在不同的实例中填充了这两个实体。那么,如何在此处进一步进行。
    • 假设您首先填充 entity1,当您填充 entity2 时,找到 enetity1(带有基于 url 的谓词)并创建关系。如果您在 coredata 知道的实体之间没有关系,则根本无法进行级联删除等操作。
    猜你喜欢
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多