Я разработчик asp.net и начинаю изучать цель c. Несколько дней пытался найти решение для этого:
Я совершенно новичок в разработке iOS, поэтому простите меня, если мой вопрос покажется глупым.
У меня есть 2 контроллера табличного представления:
AnnouncementsTableViewController и NewsTableViewController.
Для каждого из этих контроллеров я вызываю веб-службу с помощью набора отдыха: вот мой код в NewsTableViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self sendRequest];
}
- (void)sendRequest
{
//set the base URL
RKURL *baseURL = [RKURL URLWithBaseURLString:@"http://someurl.com/WcfDataService.svc"];
NSString *format=@"json";
NSString *un = @"blah";
NSString *pw = @"blah";
RKObjectManager *objectManager1 = [RKObjectManager objectManagerWithBaseURL:baseURL];
objectManager1.client.baseURL = baseURL;
NSDictionary *queryParams;
queryParams = [NSDictionary dictionaryWithObjectsAndKeys:format,@"format", nil];
objectManager1.client.username=un;
objectManager1.client.password=pw;
//set news mapping
RKObjectMapping *newsMapping = [RKObjectMapping mappingForClass:[News class]];
[newsMapping setSetDefaultValueForMissingAttributes:true];
[newsMapping mapKeyPath:@"NEWSTITLE"
toAttribute:@"name"];
[newsMapping mapKeyPath:@"NEWSBODY"
toAttribute:@"newsBody"];
RKURL *newsURL = [RKURL URLWithBaseURL:[objectManager1 baseURL] resourcePath:@"/NEWS" queryParameters:queryParams];
[objectManager1 loadObjectsAtResourcePath:[NSString stringWithFormat:@"%@?$%@", [newsURL resourcePath], [newsURL query]] usingBlock:^(RKObjectLoader *loader)
{
[loader.mappingProvider setObjectMapping:newsMapping forKeyPath:@"d"];
loader.method = RKRequestMethodGET;
loader.delegate = self;
loader.userData=@"NewsData";
}];
}
- (void)objectLoader:(RKObjectLoader *)objectLoader didFailWithError:(NSError *)error
{
NSLog(@"Error: %@", [error localizedDescription]);
}
- (void)request:(RKRequest*)request didLoadResponse:(RKResponse*)response {
NSLog(@"response code: %d", [response statusCode]);
}
- (void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects
{
NSString* source = (NSString*) objectLoader.userData;
NSLog(@"objects[%d]", [objects count]);
NSLog(@"%@", source);
data2 = objects;
[self.tableView reloadData];
}
И я делаю тот же код, что и выше, для AnnouncementsViewController (просто меняя базовый URL-адрес и сопоставления).
Проблема в том, что он загружается только для контроллера новостей, а не для объявлений.
Я прочитал этот https://github.com/RestKit/RestKit/wiki/Using-Multiple-Base-URLs-%28and-Multiple-Object-Managers%29
но не могу понять и применить к моему коду.
Я надеюсь, что кто-то может пролить свет!
С уважением, Рикуна