Ich habe gerade herausgefunden RestKit und es wird ein wichtiger Teil der App, die ich mache. Zu der Zeit war ich in der Lage, es mit den Kerndaten zu integrieren, aber ich habe nicht die beste Möglichkeit gefunden, mehrere GET-Anfragen zu senden.RestKit: Wie mehrere Anfragen zu Batch und eine Antwort erhalten, sobald sie fertig sind?
Was ich tun muß, ist:
Daten aus den folgenden Adressen Erhalten:
http://url.com/api/banner/
http://url.com/api/category/
http://url.com/api/link/
Die URL wird in folgendem Format immer: http://url.com/api/SOMETHING/
Sobald alle Anfragen sind Fertig, ich möchte einen Code ausführen (z. B. einen neuen View-Controller aufrufen). Was wäre der beste Weg, dies zu tun?
Im Moment ist dies der Code Ich verwende:
- (id)init
{
self = [super init];
if (self) {
[self setupConnector];
[self setupDatabase];
[self setupMappings];
[self sendRequests];
}
return self;
}
- (void)setupConnector
{
// Initialize RestKIT
RKObjectManager *objectManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://baseURL"]];
self.managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:[[NLCoreData shared] managedObjectModel]];
objectManager.managedObjectStore = self.managedObjectStore;
}
- (void)setupDatabase
{
NSString *storePath = [[NLCoreData shared] storePath];
NSError *error = nil;
NSPersistentStore *persistentStore = [self.managedObjectStore addSQLitePersistentStoreAtPath:storePath fromSeedDatabaseAtPath:nil withConfiguration:nil options:nil error:&error];
NSAssert(persistentStore, @"Failed to add persistent store with error: %@", error);
[self.managedObjectStore createManagedObjectContexts];
self.managedObjectStore.managedObjectCache = [[RKInMemoryManagedObjectCache alloc] initWithManagedObjectContext:self.managedObjectStore.persistentStoreManagedObjectContext];
}
- (void)setupMappings
{
RKObjectManager *objectManager = [RKObjectManager sharedManager];
// Mappings
// banner
RKEntityMapping *bannerMapping = [RKEntityMapping mappingForEntityForName:@"Banner" inManagedObjectStore:self.managedObjectStore];
[bannerMapping addAttributeMappingsFromDictionary:@{
@"title": @"title",
@"id": @"bannerID",
@"created_at": @"created_at",
@"image": @"image",
@"resource_uri": @"resource_uri",
@"updated_at": @"updated_at",
@"url": @"url"
}];
bannerMapping.identificationAttributes = @[ @"bannerID" ];
RKResponseDescriptor *bannerDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:bannerMapping
pathPattern:@"/api/v1/banner/"
keyPath:@"objects"
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:bannerDescriptor];
// category
RKEntityMapping *categoryMapping = [RKEntityMapping mappingForEntityForName:@"Category" inManagedObjectStore:self.managedObjectStore];
[categoryMapping addAttributeMappingsFromDictionary:@{
@"name": @"name",
@"id": @"categoryID",
@"created_at": @"created_at",
@"resource_uri": @"resource_uri",
@"updated_at": @"updated_at",
@"active": @"active"
}];
categoryMapping.identificationAttributes = @[ @"categoryID" ];
RKResponseDescriptor *categoryDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:categoryMapping
pathPattern:@"/api/v1/category/"
keyPath:@"objects"
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:categoryDescriptor];
}
- (void)sendRequests
{
RKObjectManager *objectManager = [RKObjectManager sharedManager];
// Send Request
[objectManager getObjectsAtPath:@"/api/v1/banner/" parameters:nil success:^(RKObjectRequestOperation * operation, RKMappingResult *mappingResult) {
NSLog(@"SUCCESS: %@", mappingResult.array);
} failure: ^(RKObjectRequestOperation * operation, NSError * error) {
NSLog(@"FAILURE %@", error);
}];
// category
[objectManager getObjectsAtPath:@"/api/v1/category/" parameters:nil success:^(RKObjectRequestOperation * operation, RKMappingResult *mappingResult) {
NSLog(@"SUCCESS: %@", mappingResult.array);
} failure: ^(RKObjectRequestOperation * operation, NSError * error) {
NSLog(@"FAILURE %@", error);
}];
}
Irgendwelche Tipps?
Arbeitete gut! Vielen Dank. – hdoria