RestKit托管对象无法更新的问题

时间:2013-10-17 22:31:50

标签: ios restkit restkit-0.20

所以我有一个奇怪的问题,我不确定这里发生了什么。当应用程序首次加载时,它会请求对象并将它们映射得很好。在重新加载或再次启动应用程序时,RestKit似乎只返回应用程序加载上的原始映射对象,如果我删除应用程序并再次构建所有原始对象,则返回任何新对象。

我通过在初始应用加载后添加新对象来测试curl。所以说如果我用5个对象加载应用程序,那么我再添加2个带有curl的调用到同一个服务将是正确的,返回7个对象,而Restkit仍然只在应用程序中返回5。

目前我正在使用这种方法,它可能与我的托管上下文有关吗?任何帮助都会有用。

RKManagedObjectRequestOperation *operation = [[RKObjectManager sharedManager] managedObjectRequestOperationWithRequest:request
                                                                                                           managedObjectContext:[RKObjectManager sharedManager].managedObjectStore.mainQueueManagedObjectContext
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
     // Create dictionary to pass as userinfo with returned object
     NSDictionary *userInfo = [[NSDictionary alloc] initWithObjects:@[mappingResult] forKeys:@[ OBJECT_FROM_SERVER ]];
     [[NSNotificationCenter defaultCenter] postNotificationName:notificationName object:nil userInfo:userInfo];
}
failure:^(RKObjectRequestOperation *operation, NSError *error) {
}];

编辑:我还应该补充说服务器日志确认在初始应用程序加载后Restkit没有访问服务器,但它调用相同的方法来获取结果。

Edit2:好的,所以我注意到一些非常奇怪的东西,不确定这是否是预期的行为。正如我在第一次接触Web服务后所说的那样,RestKit甚至不打扰网络服务,而是使用引用的方法从核心数据中提取数据。使用任何getObjects方法实际上每次都与服务器联系?这是预期的行为?除非我错过了什么,否则文档肯定不会反映出来。

Server: Apache-Coyote/1.1
Cache-Control: public, max-age=86400
Content-Type: application/json
Content-Length: 1629
Date: Sun, 20 Oct 2013 22:43:20 GMT

1 个答案:

答案 0 :(得分:2)

您的服务器返回缓存标头:

Cache-Control: public, max-age=86400

这意味着对于1天的同一请求,URL加载系统不会再次命中服务器。相反,将使用缓存的值。这是URL加载系统中的缓存,而不是RestKit中的缓存。

如果要在每次发出请求时命中服务器,请更改服务器的缓存响应或设置URL加载系统以忽略缓存。