NSXMLParser 遇到的一个坑

BUG背景:

先前有个接口一直返回的是XML格式的内容,客户端一直使用NSXMLParser解析。其完善的delegate回调让我一直相信不管遇到何种情况都能处理。但是,问题来了。api这次没有返回任何内容(Content-Length: 0),此时,照常进行parser操作,但是没有走任何delegate方法。

解决办法:

1、第一种方法,可能大家都想到了,如果api返回的内容是空,这很容易判断啊。嗯,但是此方法不一定适合所有人。

2、我们的项目网络请求是封装的AFNetworking,请求XML的地方返回的数据类型是NSXMLParser,我们注意到NSXMLParser里边有一个readonly属性parserError,但是,根据以往经验,我们都是在delegate的错误回调方法里面去处理。现在所有的delegate都不再调用,只能在parser操作刚开始的时候判断了。

贴代码:

//省略初始化代码……
parser.delegate = self;
BOOL error = [parser parse];
if (error) {                 //此时已然无法判断内容为空的情况
    //解析失败了
}
if (parser.parserError) {    //这里就可以判断了
    //解析失败了
}

此时打印的error信息为:Error Domain=NSXMLParserErrorDomain Code=1 "(null)"

完美收工~

猜你喜欢

转载自blog.csdn.net/xuexixiaoshizhe/article/details/90053595