我已经设置了以下获取请求块来处理孤立对象的删除:
[objectManager addFetchRequestBlock:^NSFetchRequest *(NSURL *URL) {
RKPathMatcher *pathMatcher = [RKPathMatcher pathMatcherWithPattern:API_GET_ACTIVE_RIDES];
NSString * relativePath = [URL relativePath];
NSDictionary *argsDict = nil;
BOOL match = [pathMatcher matchesPath:relativePath tokenizeQueryStrings:NO parsedArguments:&argsDict];
if (match) {
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Ride"];
return fetchRequest;
}
return nil;
}];
由于需要允许用户退出并重新登录,因此我使用以下方法清除Core Data中的所有数据:
+ (void) clearUserData {
NSError * error = nil;
[[RKManagedObjectStore defaultStore] resetPersistentStores:&error];
if(error != nil){
[WRUtilities criticalError:error];
return;
}
}
然而,如果我退出应用并重新登录,第一次登录时加载的对象不会从服务器加载。使用RestKit日志记录,我可以看到请求已发出,并从服务器返回正确的数据,但似乎完全跳过了映射,导致没有对象被(重新)插入到核心数据中。
如果删除我的抓取请求块,一切都像我预期的那样工作 - clearUserData删除所有数据,在登录上传数据时从服务器重新查询数据并重新加载到核心数据中。
我的问题有两个方面。我需要改变什么来获得成功重新加载数据的预期行为,以及我理解为仅用于删除孤儿对象的获取请求块对这种情况产生何种影响?
我以前也见过这种情况,只需删除获取请求块即可,但我更喜欢使用此功能而不是因为这个问题跳过它。