NSXmlParser иногда неправильно анализирует xml - PullRequest
0 голосов
/ 04 июня 2011

когда я вызываю API и анализирую ответ xml, иногда я получаю эту ошибку ..

    Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSXMLParser stringByAppendingString:]: unrecognized selector sent to instance 0x6a22080'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x014c7be9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x012bc5c2 objc_exception_throw + 47
    2   CoreFoundation                      0x014c96fb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x01439366 ___forwarding___ + 966
    4   CoreFoundation                      0x01438f22 _CF_forwarding_prep_0 + 50
    5   CityDeal24                          0x0002520e -[CategoryXmlHandler parser:foundCharacters:] + 112
    6   Foundation                          0x001e8dd4 _characters + 235
    7   libxml2.2.dylib                     0x018371fb xmlParseCharData + 287
    8   libxml2.2.dylib                     0x01845a6f xmlParseChunk + 3730
    9   Foundation                          0x001e921a -[NSXMLParser parse] + 321
    10  CityDeal24                          0x00025030 -[CategoryXmlHandler parseXML:apiUrl:] + 444
    11  CityDeal24                          0x00004ac6 -[DagenDealsViewController downloadCategories] + 227
    12  CityDeal24                          0x00006708 -[DagenDealsViewController doInBackgroundWhenViewWillLoad] + 114
    13  Foundation                          0x0011ad4c -[NSThread main] + 81
    14  Foundation                          0x0011acd8 __NSThread__main__ + 1387
    15  libSystem.B.dylib                   0x9821c85d _pthread_start + 345
    16  libSystem.B.dylib                   0x9821c6e2 thread_start + 34
)
terminate called after throwing an instance of 'NSException'

Ответы [ 3 ]

0 голосов
/ 04 июня 2011

Как говорит ошибка, вы звоните stringByAppendingString: на NSXMLParser. Найдите в своем проекте stringByAppendingString: и убедитесь, что вы вызываете его в строке.

0 голосов
/ 04 июня 2011

Похоже, вы вызываете метод stringByAppendingString для объекта NSXMLParser.

РЕДАКТИРОВАНИЕ:

Полагаю, вы объявили currentElement в вашем .h как NSMutableArray и с выделенным , что в init функционирует, как показано ниже.

  currentElement =  [NSMutableArray alloc] initWithCapacity:10];

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
     [currentElement appendString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
     NSLog(@"%@",string);
  } 
0 голосов
/ 04 июня 2011

Пожалуйста, убедитесь, что все строковые данные имеют значения или нет. Если какое-либо строковое значение будет равно нулю, вы получите такую ​​ошибку. Итак, включите условие для нулевого значения также.

...