Swift NSTableView未在块内重新加载
我有一个非常简单的Swift项目,在我的故事板中连接了一个NSTableView。数据源、代理和IBOutlet都已连接 该表在加载时按预期运行委托方法。我可以从Swift NSTableView未在块内重新加载,swift,macos,nstableview,backendless,Swift,Macos,Nstableview,Backendless,我有一个非常简单的Swift项目,在我的故事板中连接了一个NSTableView。数据源、代理和IBOutlet都已连接 该表在加载时按预期运行委托方法。我可以从func运行tableView.reloadData(),并成功地再次运行这些方法 但是,我有一个方法可以获取数据并提供一个完成块。我在这里调用self.tableView.reloadData(),但我的tableView没有重新加载 更值得注意的是,该应用程序崩溃,我在控制台中看到此错误:致命错误:在展开可选值时意外发现nil 如何
func
运行tableView.reloadData()
,并成功地再次运行这些方法
但是,我有一个方法可以获取数据并提供一个完成块。我在这里调用self.tableView.reloadData(),但我的tableView没有重新加载
更值得注意的是,该应用程序崩溃,我在控制台中看到此错误:致命错误:在展开可选值时意外发现nil
如何从块中重新加载tableview
此外,以下是该函数:
func fetchData()
{
beHelper.backendless.data.of(Assembly.ofClass()).find(
{ (collection : BackendlessCollection!) -> Void in
let assemblies = collection.getCurrentPage()
self.data.removeAll()
for obj in assemblies { self.data.append(obj as! Assembly) }
self.tableView.reloadData()
},
error: { (fault : Fault!) -> Void in
})
}
您在哪一行看到“意外发现零”错误?另外,确保从主线程调用了
reloadData()
。您可以通过添加以下行来检查它是否在主线程上运行print(“is main thread:\”(“NSThread.isMainThread())
崩溃和错误会在重新加载数据
行上抛出。我尝试在dispatch\u async
中运行它,但得到了相同的结果。您可以检查self.tableView
的值吗?我的猜测是,当您将其声明为var tableView:UITableView时,在执行点它是nil
哪个崩溃是因为它应该有一个值?此时tableview为nil
。问题是,我怎样才能避开这个问题?表在这个时间点上确实存在,但我无法从块内访问它?真正的问题是,如果表视图显然为零,您如何确保它存在?您在哪里调用fetchData()
?您应该尝试在viewDidLoad()
中/之后调用它,以确保tableView
在该点实际就位。