如何等待另一个类的函数完成调用下一个函数

时间:2018-06-03 20:32:11

标签: ios swift

我正在Swift中编写一个应用程序,但我遇到了一个我无法找到帮助的问题。

所以我有一个ViewController和一个名为CameraHandler的类,它使用一个ActionSheet调用ActionSheet然后呈现相机或图库选择器并保存结果图像。

我想要做的是:调用相机,保存图像,然后将相关信息存储到对象。

     CameraHandler.shared.showActionSheet(vc: self, reg: car.registration) 

        self.car.imagePath = CameraHandler.shared.returnFilePath()
        self.storeCar() // completes before CameraHandler can get imagepath

我的解决方法是使用一个简单的DispatchQueue等待10秒,希望它及时完成。

2 个答案:

答案 0 :(得分:0)

亚特在评论中说,不要等。不要指望从您的函数返回答案。您需要重写showActionSheet()函数以获取完成处理程序。 (这是一个代码块{更具体地说,是一个闭包},你作为参数传递。)当你的函数从异步进程得到答案时,它需要完成(从远程服务器获取一个值,提示用户输入一些东西)等等)然后它调用完成处理程序。

请参阅我对以下主题的回答。我包含一个示例项目,该项目使用带有完成处理程序的函数从远程服务器获取数据。

Swift: Wait for Firebase to load before return a function

答案 1 :(得分:0)

使用其他编程语言中的闭包或块作为完成处理程序,举个例子。

git push --mirror

然后你就可以使用它:

func returnFilePath(completionHandler: ((String) -> ()) {
     // after get file path
     completionHandler(path)
}