Быстрое обновление значения массива с использованием объекта поиска в фоновом режиме - PullRequest
1 голос
/ 25 января 2020

Я пытаюсь получить данные из Parse с помощью findObjectsInbackground и сохранить их в массиве. Я уже создал за пределами s coop из viewDidLoad(). Мне удалось получить и распечатать данные, но они не хранятся в массиве, и он остается пустым! Я использовал self.articalsTableView.reloadData(), но, к сожалению, массив myArray все еще пуст.

Любая помощь, пожалуйста, это меня смущало уже два дня!

import UIKit
import Parse

class FirstViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var articalsTableView: UITableView!

    var myArray = [PFObject]()

override func viewDidLoad() {
        super.viewDidLoad()

let query = PFQuery(className: "Gateshead")
        query.findObjectsInBackground {(objects, error) -> Void in
            if error !=  nil {
                print(error)
            } else {
                if let articals = objects {

                    for artical in articals {
                   // print (articles)   THIS IS WOKING WELL

                        self.myArray.append(artical)
                        self.articalsTableView.reloadData()
                    } 
                } 
            }
        }     
    }
}

1 Ответ

0 голосов
/ 25 января 2020

findObjectsInback использует фоновый поток, и вы должны отправлять в mainThread всякий раз, когда хотите получить доступ к UIKit, в этом случае обновляется self.articalsTableView. Также self.articalsTableView.reloadData () должен быть вызван в конце (не в l oop). Это предотвращает доступ к условию гонки в self.myArray основным потоком (для обновления self.articalsTableView) и фоновым потоком (для добавления художественного)

for artical in articals {
   // print (articles)   THIS IS WOKING WELL
   self.myArray.append(artical)
} 

DispatchQueue.main.async {
  self.articalsTableView.reloadData()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...