Magical Record级联删除(truncateAll)不删除

时间:2013-07-25 09:17:44

标签: ios objective-c core-data magicalrecord

我在我的应用程序中使用魔法记录。

我有一段感情......

Competition <-->> League

即。 Competition可以包含多个LeaguesLeague只能有一个Competition

Competition to League的删除规则设为Cascade。反删除规则设置为Nullify

我期望发生的是,如果我删除Competition,那么同时删除属于它的所有Leagues。 (我在以前的应用程序中成功使用了这个。)

我正在测试......

  1. 下载并插入所有比赛和联赛。
  2. 使用比赛名称记录所有联赛。

    NSArray *leagues = [League findAll];
    for (League *league in *leagues)
    {
        NSLog(@"%@ - %@", league.name, league.competition.name);
    }
    
    e.g. Man UTD - Premier League
    
  3. 运行以下代码......

    [Competition truncateAll];
    
  4. 使用比赛名称记录所有联赛。

    e.g. Man UTD - (null)
    
  5. 我希望这会删除Leagues以及Competitions

    我的假设是否正确应该做什么?为什么不这样做?

2 个答案:

答案 0 :(得分:3)

管理对象时应用关系删除规则 上下文已保存,或者processPendingChanges被调用。

implementation可以看出,MagicalRecord方法MR_truncateAll调用 deleteObject在实体的所有对象上,但不保存上下文。

答案 1 :(得分:0)

我同意Martin R.

之后添加以下行
[Competition truncateAll];

[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];

你会好起来的! :)