避免使用KVO Obervers进行RESTKit调用

时间:2015-02-24 17:03:18

标签: ios core-data restkit key-value-observing restkit-0.20

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

https://github.com/dvidsilva/everpobre/blob/master/coreData/DVDNoteModel.m

但问题是,当RESTKit从服务器获取数据并将其本地存储在CoreData中时,也会调用它,这是我不想要的。

我需要避免仅针对RESTKit调用触发KVO观察者,因此当RESTKit从服务器获取数据时,它不能使用dataModified更新。

此外我发现RESTKit调用是从[RKResponseMapperOperation main]启动的,因此使用[NSThread callStackSymbols]虽然我能够成功跟踪并执行它,但此解决方案仅适用于Build版本(安装在设备上)但是for release version [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?

如果您有任何可能的提示,请回答。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用RKEntityMapping的{​​{1}}来完成此操作。但是有一些要求:

  1. 它仅适用于单个密钥。这可能是修改日期,哈希等。任何在对象的其余部分发生变化时总是会发生变化的事情。
  2. 您的JSON还必须包含此密钥。
  3. 如果你有这两个,RestKit将检查目标对象的modificationKey是否与JSON匹配。如果不进行修改,则不会触发KVO。