reloadData для UITableView не работает в функции с завершением - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь вызвать функцию reloadData () в вызывающей функции, используя обработчик завершения:

override func viewDidLoad()
{
    super.viewDidLoad()

    let appDel: AppDelegate = UIApplication.shared.delegate as! AppDelegate
    let context: NSManagedObjectContext = appDel.managedObjectContext

    tableView.rowHeight = UITableViewAutomaticDimension

    do{
        var request = NSFetchRequest<NSFetchRequestResult>(entityName: "Actualites")
        let count  = try context.count(for: request)
        if (count == 0) {
            REST().getArticles(limit: 5, limitstart: 0, catid: 6, key: "47347fd312afb0625020028298560d1f", context: context) {  (json) in

                CoreDataHelper().saveArticles(new: true, saveArticles: json, context: context)

                DispatchQueue.main.async {
                    self.tableView.reloadData()
                }
            }
        }

        actualites = try context.fetch(request) as! [Actualites]
    }catch{
        print(error)
    }
    DispatchQueue.main.async {
        self.tableView.reloadData()
    }
}

Когда я вхожу в число if ... uiTableView не перезагружается.

1 Ответ

0 голосов
/ 07 июня 2018

actualites = try context.fetch(request) as! [Actualites]

actualities необходимо обновить, когда вы получите данные ответа.UITableView не знает, что это значение заполняется из запроса на выборку данных Core.

do {
        var request = NSFetchRequest<NSFetchRequestResult>(entityName: "Actualites")
        let count  = try context.count(for: request)
        if (count == 0) {
            REST().getArticles(limit: 5, limitstart: 0, catid: 6, key: "47347fd312afb0625020028298560d1f", context: context) {  (json) in

                CoreDataHelper().saveArticles(new: true, saveArticles: json, context: context)

                DispatchQueue.main.async {
                    actualites = try context.fetch(request) as! [Actualites]
                    self.tableView.reloadData()
                }
            }
        }
    } catch {
        print(error)
    }
...