【问题标题】:Magical Record deleting entity issueMagical Record删除实体问题
【发布时间】:2013-08-02 18:21:12
【问题描述】:

我有一个从反馈到反馈中的问题的一对多关系。删除规则在 Question 中设置为 Nullify,在 Feedback 中设置为 Cascade(这样,在删除反馈时,它会删除所有问题,而在删除问题时,它的指针在 feedback.questions 中设置为空)。

问题是当我删除问题(反馈中存在的许多问题中的一个)时,我无法访问反馈!虽然实际的条目确实存在于 DB 中(使用 MesaSQLite 进行了检查) 代码如下:

FeedbackQuestion * questionToDelete = [FeedbackQuestion findByQuestionId:[entryID integerValue]];
DLog(@"Deleting FeedbackQuestion with ID: %@", questionToDelete.questionID);
success = [questionToDelete MR_deleteEntity];
//success is 1 here
***
// Accessing the feedback which question was deleted
Feedback * feedback = [Feedback findByFeedbackId:feedbackId];

此处的反馈为空。为什么?我做错了什么?

【问题讨论】:

  • 你后来保存了这个删除吗?
  • 你能从 xcode 发布你的核心数据配置的截图吗?特别是关系的属性。
  • 删除时,我硬编码总是返回是。

标签: iphone objective-c core-data magicalrecord


【解决方案1】:

嗯,在“//success is 1 here”注释行之后尝试以下行:

[[NSManagedObjectContext defaultContext] saveToPersistentStoreAndWait];

或者,如果您没有启用“速记模式”:

[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];

【讨论】:

  • 嘿,这成功了!你的第二种方法帮助我获得反馈!您能否解释一下我应该在每次删除某个实体时保存上下文吗?我认为MR_deleteEntity 方法在内部完成了所有工作
  • 啊,相信我...我对此没有适当的解释! :) 我也遇到了类似的情况,只是尝试了 MR 提供的方法。在查看了 MR 的接口后,我偶然发现了一些“saveTo...”方法,并开始使用它们来保持我的更改。我认为这完全是核心数据的事情,你必须了解核心数据是如何工作的,才能知道你是否需要明确地持久化某些东西。 MR 是一个非常好的框架,但它并不能让你从理解核心数据中解脱出来——而且我在某些领域仍然无法理解核心数据!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多