我可以从API获取日期,但是当我填充单元格时,计数为零

时间:2019-08-31 12:41:41

标签: ios swift rest service urlsession

我有Service方法,该方法以异步方式完成返回结果,我可以在闭包中看到结果,但是当我退出闭包时,结果为nil

我为此使用Swift 5,并使用URLSession

var categoryViewModel = CategoryViewModel()

    override func viewDidLoad() {
        super.viewDidLoad()
        navigationItem.title = "Digital Space"
        setupTableView()
        bindViewModel()
    }

    fileprivate func bindViewModel() {
        categoryViewModel.fetchCategories { (categories) in
            self.categoryViewModel.categories = categories
        }
    }
var categories: [Category]?

    mutating func fetchCategories(completion: @escaping ([Category]) -> ()) {
        var this = self
        Repository.getAllCategories { (result) in
            switch result {
            case .failure(let error):
                print(error)
            case .success(let categories):
                this.categories = categories
                completion(categories)
            }
        }

在绑定视图模型中,我将断点放在self.categoryViewModel中,我可以从API获取日期,但是当我从此方法(例如cellForRow)退出时,视图模型中的类别为nil。

1 个答案:

答案 0 :(得分:0)

要解决此问题,您可以看到此调用全部是异步的,此问题来自GCD

所以解决就是这样

迅速

fileprivate func bindViewModel() {
        categoryViewModel.fetchCategories { (categories) in
            self.categoryViewModel.categories = categories
            DispatchQueue.Main.Async {
               self.tableView.reloadData()
           }
        }
    }