Использование SOAP в iOS с touchXML - PullRequest
0 голосов
/ 02 февраля 2012

Я использую SOAP-среду, сгенерированную sudz-c, кажется, что мои сервисные вызовы работают нормально, но когда я пытаюсь что-то сделать с данными, происходит сбой iOS (эмулятора).

Это сервисный вызов...

[service hentOpgaveliste:self action:@selector(handleToDoList:) userid:userNameTxt.text pdaid:[pdaIdTxt.text intValue]];

Для handleToDoList: я использую стандартный метод, представленный в примерах, который успешно NSLogs мой результат.

....
CXMLNode *xmlResult = (CXMLNode*)value;
NSLog(@"HentToDo: %@", [xmlResult description]);
....

Отсюда я получаю журнал высм. ниже.

{
hentOpgavelisteResult =     {
    diffgram = "<null>";
    schema =         {
        element =             {
            complexType =                 {
                choice =                     {
                    element =                         {
                        complexType =                             {
                            sequence =                                 {
                                element = "<null>";
                            };
                        };
                    };
                };
            };
        };
    };
};

Когда я пытаюсь выполнить NSLog подсчет дочерних элементов, как показано ниже, или любой другой метод экземпляра CXMLNode по этому вопросу, я получаю следующее исключение.

....
NSLog(@"Children %@", [xmlResult childCount]);
....

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary childCount]: unrecognized selector sent to instance

Не уверен, куда идти отсюда.Я видел блоги , такие как этот , в которых говорится о проблемах с touchXML и пространствами имен, но мне кажется, что у меня есть пространство имен.

Любые идеи приветствуются, когда речь идет о SOAP.Я нуб класс.

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Это распространенная ошибка; при записи целых чисел вы должны использовать% i вместо% @, например:

NSLog(@"Children %i", [xmlResult childCount]);

% @ только для регистрации объектов. Если вы попытаетесь записать целое число как объект, вы получите сбой, потому что он думает, что это указатель на случайное место в памяти, и пытается вызвать для него метод описания.

Кроме того, из полученного исключения xmlResult является NSDictionary (CFDictionary - то же самое), и в этом случае метод, который вы должны вызывать, это count, а не childCount:

NSLog(@"Children %i", [xmlResult count]);
0 голосов
/ 03 февраля 2012

Для печати количества ..

Вы должны использовать '% d'

ex:

NSLog (@ "Количество детей =% d", [xmlResult childCount]);

...