【问题标题】:NSXMLParser won't parse in iOS 4.3 but does in 5.0NSXMLParser 不会在 iOS 4.3 中解析,但会在 5.0 中解析
【发布时间】:2012-02-27 00:12:52
【问题描述】:

我有一个有趣的问题。 我有一个 iPad 应用程序,它必须解析来自 Web 的一些 XML 数据,它在 5.0 模拟器和设备中都可以正常工作,但在 iOS 4.3 模拟器上(实际上我没有任何可用的 4.3 设备)它不会解析并且[NSXMLParser parse] 方法返回 NO 我已经尝试先下载字符串然后将其转换为 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 已检查,正确。

【问题讨论】:

    标签: objective-c ios ios4 ios-simulator nsxmlparser


    【解决方案1】:

    记录NSXMLParserparseError 属性。这应该会让你知道你的问题到底是什么。

    -(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
    

    【讨论】:

    • 谢谢,看来我已经看到了显而易见的事情。然而,问题是我现在必须解决的编码错误(未知编码)-.- 但是我想知道为什么这实际上在 iOS 5 中有效
    • 很可能,NSXMLParser 中的一个错误已在 iOS5 中修复。该课程有很多更新。
    猜你喜欢
    • 2012-02-07
    • 1970-01-01
    • 2016-08-28
    • 2016-02-10
    • 2012-10-19
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 2013-02-16
    相关资源
    最近更新 更多