CloudKitの静的データ(3値)があります。UITableView
をリフレッシュすると、3つの値の代わりに6つの値が得られます。テーブルリフレッシュでは配列アイテムの数が2倍になります
Array
から古いデータをリフレッシュせずに廃棄する理由はわかりませんが、古いデータはそのまま残して、同じデータをArray
に追加します。
func getData() {
cloud.getCloudKit { (game: [Game]) in
var teamColorArray = [String]()
for item in game {
let itemColor = item.teamColor
teamColorArray.append(itemColor)
print("TCA in: \(teamColorArray)")
}
self.teamColorArray = teamColorArray
self.tableView.reloadData()
}
}
プリント:[ "CC0033"、 "FDB927"、 "E3263A"]
更新データUIRefreshControl
がを引っ張ったとき:
@IBAction func refreshData(_ sender: Any) {
self.teamColorArray.removeAll()
getData()
self.refreshControl?.endRefreshing()
}
をを設定
初期UITableView
プリント:["CC0033"、 "FDB927"、 "E3263A"、 "CC0033"、 "FDB927"、 "E3263A "]
私はそれをどういうわけかに絞り込んだと思いますgetData()
は6つの項目の数に増分されますgame
です。私はCloudKit
からすべての新しいデータを引っ張っていたのですが、それがなぜ3つの項目にとどまっているのかわかりませんが、完成ハンドラを呼び出すと値が倍増し、おそらく私の中にremoveAll
が必要でしょうか?私はちょうど本当にわからない
私は間違っていると誰かが何かを持っているか、彼らは自分のコードを修正するために何をしたいですか?
ありがとうございます!
アレイがユニークであることを期待したい場合は、配列の代わりにセットを使用してください。そうすれば、重複したデータを取得することはありません。投稿(http://stackoverflow.com/questions/27624331/unique-values-of-array-in-swift)を参照してください。 –
@ErionVええと、私は実際にセットを試してみるかもしれないと思っていましたが、私がこれまでに持っていたものでもっとシンプルなものを混乱させるかどうかは分かりませんでした。セットを試す可能性を再確認してくれてありがとうtho! – SRMR