我有一个DatabaseManager类,用于处理在我的应用程序中创建和打开数据库,并在需要时分发“上下文”。问题是openWithCompletionHandler
是异步的,因此openDatabase调用立即返回,然后我的初始视图控制器崩溃,试图从未完成打开的数据库中获取数据。
我的解决方案是将初始VC传递给openDatabase方法,并让它从完成处理程序代码块中回调到我的VC中。所以我的初始VC基本上调用DatabaseManager打开数据库,然后等待直到它收到回调,然后获取显示所需的数据。
它工作正常,出现的数据没有明显的延迟。
这是正常的做法吗?我想学习最好的方法而不是陪审团操纵有用的东西。我尝试了各种搜索和阅读Apple文档,但找不到答案。如果我错过了文档中明显的内容,请指出我。
谢谢!
答案 0 :(得分:0)
“这是正常的做法吗?”是。这是你在异步时所做的事情。有一个复杂因素,因为执行异步操作的对象A不是在异步操作完成时需要重新加载其数据的对象B,但是你通过交换对象A的引用来解决这个问题。这真的不是不同于例如NSURLSession回调其委托。