Ios 避免KVO observer进行RESTKit调用

Ios 避免KVO observer进行RESTKit调用,ios,core-data,restkit,key-value-observing,restkit-0.20,Ios,Core Data,Restkit,Key Value Observing,Restkit 0.20,我正在尝试使用KVO观察器实现dateModified更新,如下所示 但问题是,当RESTKit从服务器获取数据并将其本地存储在CoreData中时,也会调用这个函数,我不希望这样 我需要避免仅为RESTKit调用触发KVO观察器,所以当RESTKit从服务器获取数据时,它不能使用dataModified进行更新 此外,我发现RESTKit调用是从[RKResponseMapperOperation main]启动的,因此使用[NSThread callStackSymbols]虽然我能够成功

我正在尝试使用KVO观察器实现dateModified更新,如下所示

但问题是,当RESTKit从服务器获取数据并将其本地存储在CoreData中时,也会调用这个函数,我不希望这样

我需要避免仅为RESTKit调用触发KVO观察器,所以当RESTKit从服务器获取数据时,它不能使用dataModified进行更新

此外,我发现RESTKit调用是从[RKResponseMapperOperation main]启动的,因此使用[NSThread callStackSymbols]虽然我能够成功跟踪并执行它,但此解决方案仅适用于构建版本(安装在设备上),但适用于发布版本[NSThread callStackSymbols]不会返回相同的符号,从而使RESTKit调用未被跟踪

我无法跟踪当前呼叫是RESTKit还是我自己的

Is there a way to track if current Thread call is from RESTKit?
or 
Is there a way we could track it using RESTKit NSManagedObjectContext or so?
or any other possible solution?
如果你有任何可能的暗示,请回答


谢谢。

您可以使用
RKEntityMapping
modificationKey
来实现这一点。但有一些要求:

  • 它只在一个键上工作。这可能是一个修改日期、散列等。当对象的其余部分更改时,任何内容都会更改
  • 您的JSON还必须包含此密钥

  • 如果两者都有,RestKit将检查目标对象的modificationKey是否与JSON匹配。如果没有,则会发生修改,并且不会触发KVO。

    在ManagedObjectContext save:方法上使用lldb和符号断点,并调用您的方法,然后尝试找出原因。我尝试使用[NSThread callStackSymbols]&tracking[RKResponseMapperOperation main]进行修改,但这对于发布版本不起作用。有什么建议吗?你的最终目标是什么?无论您如何进行更改,它们总是会传播到上下文层次结构并导致更改通知,这是核心数据工作方式的基础。一旦脱离了后台上下文,保存RestKit,您就不知道合并是从哪里开始的。如果来自后台线程,您可能会收到will/did save通知,并在合并过程中禁用侦听器……Wain,我实际上在等待您的输入,我的目标很简单,我希望在除RESTKit之外的任何时候都为每个NSManagedObject修改“dateModified”(使用KVO Observators等)。一旦RESTKit加载RKEntityMapping对象的数据,它将创建NSManagedObjects以在coredata中持久化,而执行coredata操作时,RESTKit将覆盖来自服务器的所有NSManagedObjects的KVO观察器中的“dateModified”,这是我不希望看到的,必须有一些合适的解决方案来识别RESTKit调用,以避免KVO观察员对该调用进行观察。感谢patrick,我有dateModified,当对象发生变化时,它会发生变化,JSON中也包含dateModified,因此这两个要求都得到了遵守,请让我知道如何使用RKEntityMapping的modificationKey来达到我的要求只需将modification key设置为dateModified。