Различные вызовы веб-служб для разных контроллеров представлений Restkit

Я разработчик 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

но не могу понять и применить к моему коду.

Я надеюсь, что кто-то может пролить свет!

С уважением, Рикуна


person rikuna shoujo    schedule 07.08.2012    source источник
comment
Включите ведение журнала и посмотрите, что он вам скажет: RKLogConfigureByName(RestKit/Network, RKLogLevelTrace); RKLogConfigureByName(RestKit/ObjectMapping, RKLogLevelTrace);   -  person Paul de Lange    schedule 07.08.2012
comment
@PauldeLange Спасибо за комментарий. добавлены RKLogLevelTrace и RKLogConfigureByName. Для newstablecontroller он возвращает данные из веб-службы, но для adstablecontroller ничего не возвращает. Они оба возвращают данные, но не оба одновременно. Что мне не хватает?   -  person rikuna shoujo    schedule 07.08.2012
comment
Верен ли исходящий URL? Можете ли вы поместить этот URL-адрес в клиент REST и получить данные обратно?   -  person Paul de Lange    schedule 07.08.2012
comment
@PauldeLange, если я закомментирую коды на 1-м контроллере таблицы, 2ndViewcontroller работает нормально. и наоборот. Это означает, что с исходящим URL-адресом проблем нет.   -  person rikuna shoujo    schedule 07.08.2012
comment
Вам нужно будет опубликовать журналы RESTkit   -  person Paul de Lange    schedule 07.08.2012


Ответы (1)


@PauldeLange спасибо, что нашли время ответить. Я наконец исправил это. Эта строка — именно то, что сотворило волшебство:

 RKObjectManager *objectManager =  [RKObjectManager sharedManager];
person rikuna shoujo    schedule 08.08.2012