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)"

 

完美收工~

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章