[英]Calling web service when change the text in UITextField in Swift 3
我正在做這樣的事情。
在我的viewdidAppear()
我正在調用Web服務並獲取數據。
override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(true) if(dm.shouldRefresh) { com.showProgress() self.getStaffData() { (status) in self.com.removeProgress() if(status) { if(self.arrayDirectory != nil && self.arrayDirectory.count>0) { print("-----Directory data loaded----") self.arrayPreviouslyLoadedArray=self.arrayDirectory if(self.isfirstTime) { self.setupFaces() self.isfirstTime=false } else { self.facesCarousel.reloadData() } } else { self.addEmptyLabel() } } else { self.com.showAlertMessage() self.addEmptyLabel() } } self.dm.shouldRefresh=false } }
加載表后,我想對此執行搜索功能。 為了搜索,我使用了UITextField
func searchTextFieldEditingChanged() { if(txtSearch.text != "") { self.searchText=txtSearch.text //NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(search), object: nil) self.search() } else { self.arrayDirectory=self.arrayPreviouslyLoadedArray facesCarousel.reloadData() } }
到目前為止,這個工作正常。 但是問題出在無法在當前數組中找到匹配的字符串時。 最初,我從該服務加載20條記錄。 我正在搜索名稱“ David”。 但是這個名字不包含在我的前20條記錄中。 在我的下20條記錄中可用。 但是我的服務沒有搜索工具。 但是,如何以常規方式執行此搜索功能? 基本上我想要的是
這就是我想做的。 我已經完成了第四點。 這意味着我可以從前20條記錄中搜索一個單詞。 我試圖設置一個標志並運行服務調用,直到實現為止。
func search()
{
self.isSearching=true
self.isfound=false
//let exists = NSPredicate(format: "DisplayName2 CONTAINS[cd] \(searchText!)")
let arrayTofilter:[[String:Any]]=self.arrayDirectory as! [[String : Any]]
let aList = arrayTofilter.filter {
( $0 ["DisplayName2"] as! String).range(of: searchText!, options: [.diacriticInsensitive, .caseInsensitive]) != nil
}
if(aList.count>0)
{
arrayDirectory=aList
facesCarousel.reloadData()
isfound=true
}
else
{
repeat
{
self.loadAgain()
}
while isfound==false
}
}
但是,這不符合我的預期。 請給我建議一個更好的解決方案。 謝謝!
您不需要標志。 為了實現您的目標,所有您需要的是在找不到數據時一次又一次調用搜索功能。 所以這是偽代碼
func search() {
array.findYourObject
if found {
tableView.reloadData()
} else {
self.getStaffData() { (status) in
array += newlyFetched20Results
search()// You probably want to add some condition here to stop it from searching forever
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.