मुझे बस रेस्टकिट पता चला और यह ऐप का एक महत्वपूर्ण हिस्सा होगा जो मैं कर रहा हूं। उस समय, मैं इसे मूल डेटा के साथ एकीकृत करने में सक्षम था, लेकिन कई जीईटी अनुरोध भेजने का सबसे अच्छा तरीका नहीं मिला है।रेस्टकिट: एकाधिक अनुरोधों को कैसे बैच करें और एक बार खत्म होने के बाद प्रतिक्रिया प्राप्त करें?
मैं क्या करने की आवश्यकता है:
http://url.com/api/banner/
http://url.com/api/category/
http://url.com/api/link/
URL हमेशा निम्न स्वरूप में हो जाएगा:: http://url.com/api/SOMETHING/
एक बार सभी अनुरोधों हैं
नीचे दिए गए पते से डेटा प्राप्त करें समाप्त हो गया, मैं एक कोड चलाने के लिए चाहता हूँ (जैसे एक नया दृश्य नियंत्रक बुलावा)। क्या सबसे अच्छा तरीका होगा यह करने का?
- (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);
}];
}
कोई युक्ति:
फिलहाल, इस कोड को मैं उपयोग कर रहा हूँ है?
ठीक काम किया! धन्यवाद। – hdoria