нераспознанное исключение селектора при обработке результата мыла sudzc.com

Я создал приложение на основе кода, сгенерированного sudzc.com, для доступа к моему веб-сервису мыла. Запрос мыла и обработка помещаются в мой подкласс UITableViewController.

Это соответствующий код:

 1 - (void)viewDidLoad {
 2 [...]
 3 NSLog(@"Starting Soap Request");
 4 CCExample_ManagerService* soapService = [[CCExample_ManagerService alloc] init];
 5 [soapService getActiveVehicles:self action:@selector(getActiveVehiclesHandler:)];
 6 }
 7
 8 - (void) getActiveVehiclesHandler: (id) value {
 9 [...]
10 }

Я получаю следующее исключение в строке 5:

* Завершение работы приложения из-за необработанного исключения "NSInvalidArgumentException", причина: "-[__NSArrayI addObject:]: нераспознанный селектор отправлен экземпляру 0x112730"

После долгих поисков я действительно в отчаянии, так как метод селектора находится в том же классе и, следовательно, виден. Тот же самый код отлично работает и в другом проекте, поэтому я не уверен, что мешает ему работать в данном конкретном случае.


person Nachtkrapp    schedule 30.04.2012    source источник
comment
Вы можете показать весь файл .m ..?   -  person Ankit Srivastava    schedule 30.04.2012
comment
Вы не показываете достаточно кода, но я все равно догадался ответить.   -  person JeremyP    schedule 30.04.2012


Ответы (1)


Где-то вы создаете NSArray, а затем пытаетесь добавить к нему объект. NSArray неизменяем и не отвечает на -addObject:. Поэтому ищите, где вы создаете или получаете NSArray — возможно, где-то в getActiveVehiclesHandler: — и вместо этого сделайте его NSMutableArray.

person JeremyP    schedule 30.04.2012
comment
к сожалению, ошибка также возникает, если я закомментирую все в getActiveVehiclesHandler. Я ничего не добавляю в NSArray - person Nachtkrapp; 30.04.2012
comment
@ user1365464: Тем не менее, вам все равно нужно искать где-то, где NSArray используется изменяемым образом. - person JeremyP; 30.04.2012
comment
решено! ты был прав. было приведение к NSArray в автоматически сгенерированном коде sudzc: SoapRequest* _request = [SoapRequest create: _target action: _action service: self soapAction: @myURL/soap#getActiveVehicles postData: _envelope deserializeTo: [[NSArray alloc] autorelease]]; Изменил его на NSmutableArray, и теперь он работает! - person Nachtkrapp; 30.04.2012