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)"
完美收工~