1

所以我有一个奇怪的问题,我不确定这里发生了什么。当应用程序第一次加载时,它会请求对象并很好地映射它们。在重新加载或再次启动应用程序时,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 甚至不会打扰 web 服务,而是使用引用的方法从核心数据中提取数据。使用任何 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
4

1 回答 1

2

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

Cache-Control: public, max-age=86400

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

如果您想在每次发出请求时都访问服务器,请更改来自服务器的缓存响应或将 URL 加载系统设置为忽略缓存。

于 2013-10-20T23:18:55.403 回答