下载数据后重新加载 NSTableView

Reloading NSTableView after downloading data

我正在编写一个应用程序来帮助我在解析时更新我的​​数据库,并且我正在尝试将对象加载到 nstableview 中。

无论出于何种原因,当我在 viewcontroller 中进行调用时,我 return 为 nil,因此我将数据移至我的 appdelegate 中以获取对象。

let storyBoard = NSStoryboard(name: "Main", bundle: nil)
let myVC = storyBoard.instantiateControllerWithIdentifier("teacher") as! ViewController

var teachers = [Teacher]()

let query = PFQuery(className: "TeacherList")
query.findObjectsInBackgroundWithBlock {
    objects, error in
    if let objects = objects {
        for object in objects {
            let teacher = Teacher()
            teacher.name = object["name"] as! String
            teacher.email = object["email"] as! String
            teacher.subjectsTaught = object["subjectsTaught"] as! [String: String]
            teacher.category = object["category"] as! String
            teacher.uniqueID = object.objectId!
            teachers.append(teacher)
        }

    }
    print(teachers)
    myVC.teacherList = teachers
}

如您所见,我将其传递给我的 VC。所以我知道我需要重新加载数据,因为在下载数据之前将调用 viewDidLoad() 。我试过将 tableView.reloadData() 放在 teacherList 的 didSet 中,以防万一它是在视图加载之前设置的,我什至将它放在 viewdidload 中。

var teacherList: [Teacher]? {
didSet {
    print("got set")
    tableView.reloadData()
  }
}

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.setDelegate(self)
    tableView.setDataSource(self)
    tableView.reloadData()
}

但是,无论如何,对于 viewdidload 之后发生的任何事情,我的 tableview 都是 nil。我还在我的 getSet 中尝试了可选的通道。 我还应该说我是 OSX 编程的新手,因为我已经完成了 iOS.

的大部分编程

我可以将查询放在我的 VC 中,但每当我 运行 查询时,我 return nil。

PFQuery 异步工作,在 viewDidLoad 退出后返回数据要晚得多 - 就计算机速度而言。

在主线程上填充数组后立即重新加载块中的 table 视图。

var teachers = [Teacher]()

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.setDelegate(self)
    tableView.setDataSource(self)
    let query = PFQuery(className: "TeacherList")
    query.findObjectsInBackgroundWithBlock { [unowned self] (objects, error) in
      if let objects = objects {
        for object in objects {
            let teacher = Teacher()
            teacher.name = object["name"] as! String
            teacher.email = object["email"] as! String
            teacher.subjectsTaught = object["subjectsTaught"] as! [String: String]
            teacher.category = object["category"] as! String
            teacher.uniqueID = object.objectId!
            self.teachers.append(teacher)
        }
      }
    dispatch_async(dispatch_get_main_queue()) {
      self.tableView.reloadData()
    }
    print(self.teachers)
  }
}