在RKManagedObjectMapping中,我可以将核心数据实体的“关系”用作primaryKeyAttribute吗?

时间:2012-04-25 09:35:05

标签: ios core-data restkit

说,我把我的coredata结构化为这样......


  • classID< - RestKit primaryKeyAttribute
  • 名称
  • 时间
  • 学生(关系1对多)

学生(嵌套在课程中)

  • studentID
  • 名称
  • class(反向关系)< - RestKit primaryKeyAttribute **这不起作用?! **

我指定了映射的primaryKeyAttribute,如上所示。当我使用restkit发送加载请求时,它将使用相同的主键正确更新对象。 RestKit似乎正确地更新了课程,但对于学生来说,它只是增加了新课程并使旧学生的班级关系无效。所以现在我在db中有不需要的学生实体而没有引用类。

有没有办法可以使用RestKit正确更新学生关系?顺便说一句,我想过将studentID用作primaryKeyAttribute,但如果在新的更新中删除了一些学生,它可能无法正常工作。可能是我必须在更新之前清除班级的所有学生,但我也不知道如何在RestKit中做到这一点。因为在调用RKObjectLoader didLoadObject时,似乎所有内容都已保存到managedObjectContext。有任何想法吗? :(

1 个答案:

答案 0 :(得分:0)

仍然无法找到RestKit-way解决方案,并且看起来不会有人能够回答这个问题: - \所以我发布了我能提出的最佳方法。

我目前的工作是迭代课堂上的学生,并在objectLoader:willMapData:中手动删除它们。我必须在这里(不在objectLoader:didLoadObject:),因为它是新数据尚未保存到MOC的地方。

您也可以完全删除Class实体,但这种方式实际上并不会更新旧实体。它创建了一个新的“核心数据内部_pk”(主键)(是的,我确实关心它)。