Merge branch 'three20_empty_reload' of https://github.com/GateGuru/RestKit into GateGuru-three20_empty_reload

This commit is contained in:
Blake Watters
2011-03-19 22:29:52 -04:00
2 changed files with 9 additions and 5 deletions

View File

@@ -10,7 +10,7 @@
#import "../RestKit.h"
/**
* Generic class for loading a remote model using a RestKit request and supplying the model to a
* Generic class for loading a remote model using a RestKit request and supplying the model to a
* TTListDataSource subclass
*/
@interface RKRequestTTModel : TTModel <RKObjectLoaderDelegate> {
@@ -18,6 +18,7 @@
BOOL _isLoaded;
BOOL _isLoading;
BOOL _cacheLoaded;
BOOL _emptyReloadAttempted;
NSString* _resourcePath;
NSDictionary* _params;

View File

@@ -101,6 +101,7 @@ static NSString* const kDefaultLoadedTimeKey = @"RKRequestTTModelDefaultLoadedTi
_isLoaded = NO;
_isLoading = NO;
_resourcePath = nil;
_emptyReloadAttempted = NO;
}
return self;
}
@@ -136,6 +137,10 @@ static NSString* const kDefaultLoadedTimeKey = @"RKRequestTTModelDefaultLoadedTi
- (BOOL)isOutdated {
NSTimeInterval sinceNow = [self.loadedTime timeIntervalSinceNow];
if (![self isLoading] && !_emptyReloadAttempted && _objects && [_objects count] == 0) {
_emptyReloadAttempted = YES;
return YES;
}
return (![self isLoading] && (-sinceNow > _refreshRate));
}
@@ -239,13 +244,11 @@ static NSString* const kDefaultLoadedTimeKey = @"RKRequestTTModelDefaultLoadedTi
- (void)load {
RKManagedObjectStore* store = [RKObjectManager sharedManager].objectStore;
NSArray* cacheFetchRequests = nil;
NSArray* cachedObjects = nil;
if (store.managedObjectCache) {
cacheFetchRequests = [store.managedObjectCache fetchRequestsForResourcePath:self.resourcePath];
cachedObjects = [RKManagedObject objectsWithFetchRequests:cacheFetchRequests];
}
if (!store.managedObjectCache || !cacheFetchRequests || _cacheLoaded || [cachedObjects count] == 0) {
if (!store.managedObjectCache || !cacheFetchRequests || _cacheLoaded) {
RKObjectLoader* objectLoader = [[RKObjectManager sharedManager] objectLoaderWithResourcePath:_resourcePath delegate:self];
objectLoader.method = self.method;
objectLoader.objectClass = _objectClass;
@@ -257,7 +260,7 @@ static NSString* const kDefaultLoadedTimeKey = @"RKRequestTTModelDefaultLoadedTi
[objectLoader send];
} else if (cacheFetchRequests && !_cacheLoaded) {
_cacheLoaded = YES;
[self modelsDidLoad:cachedObjects];
[self modelsDidLoad:[RKManagedObject objectsWithFetchRequests:cacheFetchRequests]];
}
}