私は混乱しています。私はデータを表示するために動的なtableView
とloadData()
メソッドを持っています。ここでは基本的にJSONのデータをtableViewModel
にロードします。UITableViewの混乱
override func viewDidDisappear(animated: Bool) {
super.viewDidDisappear(animated)
// To avoid duplication of data when the table updates or refreshes.
self.tableViewModel.removeAll(keepCapacity: false)
}
を問題が解決されました:今、私は毎回私が実装されているテーブルの更新やリフレッシュを、データの重複を解消したいと思ってきました。今度は私の見解を変えてtableView
に戻ったら、index out of range
というエラーが出ます。 self.tableViewModel.removeAll
の後にtableView
を再ロードしようとしましたが、tableViewModel
が空のため空のtableView
が再ロードされます。 self.tableViewModel.removeAll
の後にloadData()
と呼ぶと、データの複製が再開されます。
どうすれば解決できますか? viewDidDisappear
、viewDidAppear
、viewWillDisappear
、viewWillAppear
のデータを複製せずにindex out range
エラーから自分自身を守るにはどうすればよいですか?このたびloadData()
がそのようにtableViewと呼ばれる新しいデータでのtableViewをリフレッシュされたのは何
func loadData() {
// To avoid duplication of data when the table updates or refreshes.
self.tableViewModel.removeAll(keepCapacity: false)
print("Table View Model Cleared: \(self.tableViewModel)”)
// Now load data from the internet.
}
:それはように私リットルoadData()
方法にviewDidDisappear
からself.tableViewModel.removeAll(keepCapacity: false)
の場所を変更することによって、働いていた私にとっては
'tableViewModel'のタイプは何ですか?作成したタイプの場合は、その定義方法を表示できますか?また、範囲外のものが原因で発生する可能性があるため、データソースメソッドを表示してください。 – Sweeper
完全なエラーメッセージと 'UITableViewDataSource'デリゲートに関連するすべての関数を投稿できますか?どのようにデータをロードしますか?私があなたが言及した 'tableViewModel'が何であるかはよく分かりません。 問題はおそらく 'func tableView(UITableView、numberOfRowsInSection:Int)'または 'tableViewModel'にあります。 データが動的である場合は、 'viewWillAppear'でデータを準備する必要があります。データが修正された場合は、 'viewDidLoad'でデータを準備します。 –
@Sweeper tableViewModelは、私が 'init(json:NSDictionary)'として定義した構造体です。すべてのデータソースメソッドを投稿したい場合は、ここに投稿する必要があります。しかし、私が知る限り、エラーはnumberOfRowsInSectionにある可能性があります。私はそれを実装しました:return tableViewModel.count。しかし、私は問題を解決しました。まだベストプラクティスがあれば、それはすばらしいでしょう。 – waseefakhtar