我正在實現一種方法,用於在表視圖到達底部時加載從sql服務器返回的更多結果。Swift tableview加載更多數據
我面臨的問題是getData()方法在循環中調用,我不知道爲什麼。
日誌重複下面的輸出,直到應用程序被終止:
索引路徑:12
最後一個元素:12
索引路徑:12
最後一個元素:12
我懷疑它是創建循環的那個,但我無法弄清楚要改變什麼。
任何這幫助是非常讚賞
這是我willDisplayCell方法:
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
let lastElement = id.count - 1
if indexPath.row == lastElement {
print("Index Path:\(indexPath.row)")
print("Last Element: \(lastElement)")
limitf = "\(lastElement)"
getData()
}
}
,我使用來獲取數據的功能:
func getData(){
let defaults = UserDefaults.standard
let userID = defaults.string(forKey: "id")
if(limitf == ""){
id.removeAll()
firstname.removeAll()
lastname.removeAll()
fbid.removeAll()
image.removeAll()
totalratings.removeAll()
mobile.removeAll()
}
let url = NSURL(string: "https://www.****/getapplications.php?&jobid=\(jobid)&limitf=\(limitf)")
// print(url!)
let task = URLSession.shared.dataTask(with: url as! URL) { (data, response, error) -> Void in
if let urlContent = data {
do {
if let jsonResult = try JSONSerialization.jsonObject(with: urlContent, options: []) as? [[String:AnyObject]] {
var i = 0
while i < jsonResult.count {
self.id.append(jsonResult[i]["id"]! as! String)
self.firstname.append(jsonResult[i]["firstname"]! as! String)
self.lastname.append(jsonResult[i]["lastname"]! as! String)
self.fbid.append(jsonResult[i]["fbid"]! as! String)
self.image.append(jsonResult[i]["image"]! as! String)
self.totalratings.append(jsonResult[i]["totalratings"]! as! String)
self.mobile.append(jsonResult[i]["mobile"]! as! String)
i = i + 1
}
}
} catch {
print("JSON serialization failed")
}
} else {
print("ERROR FOUND HERE")
}
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
task.resume()
}
}
您是否試過添加一個標誌來檢測'getData'何時運行,以便它在標誌指示進程已經在運行時只返回?這樣,如果'getData'被連續調用兩次,它仍然只會運行一次。 – Fahim