Introduced the RKTableController component for iOS.

RKTableController provides a flexible, integrated system for driving iOS table views using
the RestKit object mapping engine. Local domain objects can be mapped into table cells within a
collection or presented for editing as part of a form. There are three flavors of table controllers
available:

* Static Tables: RKTableController can be used to render simple static tables that are composed of RKTableItems
presented in RKTableSections. Table items can quickly be built and added to a table without a backing model
or can have content object mapped into them for presentation.
* Network Tables: RKTableController can also render a table with the results of a network load. The typical use
case here is to have RestKit retrieve a JSON/XML payload from your remote system and then render the content into
a table.
* Core Data Tables: RKFetchedResultsTableController can efficiently drive a table view using objects pulled from a
Core Data managed object context. Typical use-cases here are for the presentation of large collections that are
pulled from a remote system, offering offline access, or speeding up a UI by using Core Data as a fast local cache.

RKTableController supports a number of bells and whistles including integrated searching/filtering and pull to refresh.
This commit is contained in:
Blake Watters
2011-11-17 12:17:07 -05:00
parent b73d042b23
commit 3d0f0ab39e
192 changed files with 17854 additions and 1584 deletions

View File

@@ -28,6 +28,10 @@
#import "RKRequest_Internals.h"
#import "RKLog.h"
// Set Logging Component
#undef RKLogComponent
#define RKLogComponent lcl_cRestKitCoreData
@implementation RKManagedObjectLoader
@synthesize objectStore = _objectStore;
@@ -203,4 +207,18 @@
}
}
- (BOOL)isResponseMappable {
if ([self.response wasLoadedFromCache] && self.objectStore.managedObjectCache) {
NSFetchRequest* cacheFetchRequest = [self.objectStore.managedObjectCache fetchRequestForResourcePath:self.resourcePath];
if (! cacheFetchRequest) {
RKLogDebug(@"Skipping managed object mapping optimization -> Managed object cache returned nil cacheFetchRequest for resourcePath: %@", self.resourcePath);
return [super isResponseMappable];
}
NSArray* cachedObjects = [NSManagedObject objectsWithFetchRequest:cacheFetchRequest];
[self informDelegateOfObjectLoadWithResultDictionary:[NSDictionary dictionaryWithObject:cachedObjects forKey:@""]];
return NO;
}
return [super isResponseMappable];
}
@end