質問: NSAttributedString(string: "↓引っ張る") self.refreshControl.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged) self.tableView.addSubview(refreshControl) } //更新のデータ取得方法 func refresh(sender:AnyObject) { self.loadData() //refreshを終える self.refreshControl.endRefreshing() } ``` こういうプログラムを書いたのですが、引っ張って更新すると、同じ内容がダブって表示されます。 もう画面に表示されているテキストはダブらずに表示されていないものだけ更新するにはどうすればいいでしょうか? 回答よろしくお願いします。
回答: Parseは利用したことがないのですが、気付いたことを書きます。 PFQueryで特に絞り込みがなされていないようなので、query.findObjectsInBackgroundWithBlockで毎回全件取得していますよね。それを既にデータが入っているself.commentsに追加しているので、重複して追加されているようです。 ですので可能であればPFQueryで日付で絞り込むか、それができなければself.commentsを取得した配列で置き換える ``` self.comments = objects ``` ようにすれば良いと思います。 それからquery.findObjectsInBackgroundWithBlockはバックグラウンドで処理されるようですが、コールバックはどのスレッドで呼ばれるのでしょうか?メインスレッドなど常に特定のスレッドで呼ばれるのでしたらよいのですが、もしそうでなければ同時実行障害が発生する可能性があるように思います。それとtableView.reloadDataはメインスレッドで実行する必要があります。