NSXMLParser не будет анализировать в iOS 4.3, но делает в 5.0 - PullRequest
0 голосов
/ 05 февраля 2012

У меня интересная проблема. У меня есть приложение для iPad, которое должно анализировать некоторые XML-данные из Интернета, и все это прекрасно работает в симуляторе и устройстве 5.0, но в симуляторе iOS 4.3 (на самом деле у меня нет доступных устройств 4.3), оно не будет анализироваться [NSXMLParser parse] метод повторяет НЕТ Я уже пытался сначала загрузить строку, а затем преобразовать ее в NSData, а также загрузить непосредственно NSData и инициализировать анализатор с загруженными NSData.

Вот мой код

-(void)parseWithURLString:(NSString *)urlString{
    NSURL *url = [NSURL URLWithString:urlString];
    if (url != nil) {
        self.parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
        [[self parser] setDelegate:self];
        if([[self parser] parse]){
            NSLog(@"WOOHOO!");
            [TestFlight passCheckpoint:@"XML has been parsed"];
        }
}

urlString был проверен и является правильным.

1 Ответ

2 голосов
/ 05 февраля 2012

Зарегистрируйте parseError свойство вашего NSXMLParser. Это должно заставить вас понять, в чем именно заключается ваша проблема.

-(void)parseWithURLString:(NSString *)urlString{
    NSURL *url = [NSURL URLWithString:urlString];
    if (url != nil) {
        self.parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
        [[self parser] setDelegate:self];
        if([[self parser] parse]){
            NSLog(@"Parser completed.");
        }
        else {
            NSLog(@"Parser failed. Error: %@",[self.parser parseError]);
        }
}

В качестве альтернативы вы можете реализовать следующий протокол и регистрировать ошибку, возникающую во время синтаксического анализа:

- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
...