【本文代碼針對(duì)iOS (其實(shí)也沒(méi)多少代碼),安卓或者其他開發(fā)遇到這樣的問(wèn)題可以參考一下這個(gè)邏輯挎春∑煅洌】
現(xiàn)在很多app都有搜索框內(nèi)容變更后就直接搜索相關(guān)內(nèi)容而不用點(diǎn)擊搜索按鈕這種設(shè)計(jì)。
而在輸入過(guò)程中可能會(huì)進(jìn)行多次搜索宴倍。
但即使是異步搜索张症,先調(diào)用的搜索返回結(jié)果更晚的情況還是比較罕見(jiàn)的。
(不過(guò)在返回?cái)?shù)據(jù)量大的時(shí)候是有這個(gè)可能的)
今天在項(xiàng)目中遇到一個(gè)bug鸵贬,在輸入框搜索后刪除里面的字符吠冤,全部刪完之后卻顯示了搜索第一個(gè)字符的結(jié)果。
因?yàn)樗阉鳠o(wú)結(jié)果是用的DZNEmptyDataSetSource恭理,本來(lái)無(wú)結(jié)果卻因?yàn)榻涌诜祷刂匦滤⑿铝恕?br>
我在搜索所在的類里面加了一個(gè)變量searchText拯辙,用于保存當(dāng)前輸入框的值,或者直接獲取searchBar的text也可以颜价。
在調(diào)用搜索接口前先
NSString *text = self.searchText;
在成功回調(diào)開頭加上判斷
success:^(){
if ([text isEqualToString:self.searchText]) {
return;
}
……
}
就可以避免以上問(wèn)題涯保,同時(shí)正常搜索的時(shí)候也不用執(zhí)行太多后面的無(wú)用代碼,反正數(shù)據(jù)也會(huì)被重新覆蓋周伦,也算是優(yōu)化了這一塊的性能夕春。