テーブルビューが最下部に達したときにSQL Serverから返された結果をさらに読み込むメソッドを実装しています。スウィフトテーブルビュー詳細データのロード
私が直面している問題は、getData()メソッドがループで呼び出され、その理由を理解できないことです。アプリケーションが終了するまで
ログは以下の出力を繰り返し:
インデックスパス:12
最後の要素:12
インデックスパス:12
最後の要素:12
私はループを作成しているものの1つと思っていますが、私は何を変えるべきかは分かりません。
これにどのような援助が大幅に
を高く評価しているこれは私の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'が連続して2回呼び出されると、それはまだ1回だけ実行されます。 – Fahim