我们在核心数据托管对象上下文中保存了一个NSTextView和一些有关其内容的数据。托管对象上下文保留在内存中时,一切都很好。但是当我们保存它时,我们会得到非常奇怪的获取请求行为。
例如,我们运行一个获取请求,要求textLocation小于或等于15的所有元素。我们返回的数组中的第一个对象的textLocation为16.
我知道我在这里找不到明确的答案,因为代码相当复杂。但有谁知道这个问题有什么味道?
我的想法是,我们在某种程度上没有在保存后获得与NSTextView同步的正确MOC?什么可以改变这打破了这个?
感谢。
答案 0 :(得分:0)
例如,我们运行获取请求 要求所有元素都有一个 textLocation小于或等于15。 我们得到的数组中的第一个对象 back的textLocation为16。
真的,获得这个的唯一方法是(以可能性的相反顺序):
我会从(3)自己开始,因为它似乎更常见,直到你确认你没有显示问题,你无法诊断其他问题。
答案 1 :(得分:0)
我终于设法弄清楚发生了什么。我正在使用setPrimitiveValue设置textLocation ...只是因为我不希望触发通知。事实证明这是一个非常糟糕的主意,因为Core Data并不知道价值已发生变化。它仍然认为价值是15而不是16。
让这成为一个教训:永远不要绕过KVO,除非您在管理对象中,并且知道自己在做什么!