- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- // Initialize RestKit
- RKObjectManager* objectManager = [RKObjectManager objectManagerWithBaseURL:@"http://twitter.com"];
- // Enable automatic network activity indicator management
- objectManager.client.requestQueue.showsNetworkActivityIndicatorWhenBusy = YES;
- // Initialize object store
- #ifdef RESTKIT_GENERATE_SEED_DB
- NSString *seedDatabaseName = nil;
- NSString *databaseName = RKDefaultSeedDatabaseFileName;
- #else
- NSString *seedDatabaseName = RKDefaultSeedDatabaseFileName;
- NSString *databaseName = @"RKTwitterData.sqlite";
- #endif
- objectManager.objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:databaseName usingSeedDatabaseName:seedDatabaseName managedObjectModel:nil delegate:self];
- /*!
- Map to a target object class -- just as you would for a non-persistent class. The entity is resolved
- for you using the Active Record pattern where the class name corresponds to the entity name within Core Data.
- Twitter status objects will be mapped onto RKTStatus instances.
- */
- RKManagedObjectMapping* statusMapping = [RKManagedObjectMapping mappingForClass:[RKTStatus class]];
- statusMapping.primaryKeyAttribute = @"statusID";
- [statusMapping mapKeyPathsToAttributes:@"id", @"statusID",
- @"created_at", @"createdAt",
- @"text", @"text",
- @"url", @"urlString",
- @"in_reply_to_screen_name", @"inReplyToScreenName",
- @"favorited", @"isFavorited",
- nil];
- // Register our mappings with the provider
- [objectManager.mappingProvider setMapping:statusMapping forKeyPath:@"status"];
- #ifdef RESTKIT_GENERATE_SEED_DB
- RKLogConfigureByName("RestKit/ObjectMapping", RKLogLevelInfo);
- RKLogConfigureByName("RestKit/CoreData", RKLogLevelTrace);
- RKManagedObjectSeeder* seeder = [RKManagedObjectSeeder objectSeederWithObjectManager:objectManager];
- // Seed the database with instances of RKTStatus from a snapshot of the RestKit Twitter timeline
- [seeder seedObjectsFromFile:@"restkit.json" withObjectMapping:statusMapping];
- // Finalize the seeding operation and output a helpful informational message
- [seeder finalizeSeedingAndExit];
- // NOTE: If all of your mapped objects use keyPath -> objectMapping registration, you can perform seeding in one line of code:
- // [RKManagedObjectSeeder generateSeedDatabaseWithObjectManager:objectManager fromFiles:@"users.json", nil];
- #endif
- // Create Window and View Controllers
- RKTwitterViewController* viewController = [[[RKTwitterViewController alloc] initWithNibName:nil bundle:nil] autorelease];
- UINavigationController* controller = [[UINavigationController alloc] initWithRootViewController:viewController];
- UIWindow* window = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
- [window addSubview:controller.view];
- [window makeKeyAndVisible];
- return YES;
- }