下载数据后重新加载 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)
}
}
我正在编写一个应用程序来帮助我在解析时更新我的数据库,并且我正在尝试将对象加载到 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)
}
}