ios - 快速从调用者到被调用者的回调函数

标签 ios swift api asynchronous callback

我有一个 View Controller 和一个类,用于执行调用服务并从服务器获取数据的操作。 ViewController 代码如下,

class ViewController : UIViewController
{

override func viewDidLoad() {
let parser  = Parser()
parser.connectServer("abc URL" , ..... <gotDataFromServer> ..... )
}

func gotDataFromServer(response:String)
{
...... Do our things here .......
}    
}

解析器代码如下,

class Parser
{
func connectServer(apiURL:String,...<call back function name>...)
    {
        let manager = RequestOperationManager.sharedManager()
        manager.GET(apiURL ,
            parameters: nil,
            success: { (operation,responseObject) ->Void in
                    .....<Call back the function which is passed in parameter> ....
            },
            failure: { (operation , error) in
               print ("error occurred")
        })
    }
}

现在,在上面的示例代码中,我想传递回调函数“gotDataFromServer”作为参数,当内部函数从服务器获取响应时,我想回调该函数。 任何人都可以帮忙吗?

最佳答案

您可以使用委托(delegate)来实现这一点。试试下面的代码

class ViewController : UIViewController, DataDelegate
{

override func viewDidLoad() {
let parser  = Parser()
parser.delegate = self
parser.connectServer("abc URL" , ..... <gotDataFromServer> ..... )
}

func gotDataFromServer(response:String)
{
...... Do our things here .......
}    
}

并在解析器中添加如下协议(protocol)

protocol DataDelegate {
    func gotDataFromServer(response:String)
}
class Parser
{
var delegate : DataDelegate!
func connectServer(apiURL:String,...<call back function name>...)
    {
        let manager = RequestOperationManager.sharedManager()
        manager.GET(apiURL ,
            parameters: nil,
            success: { (operation,responseObject) ->Void in
                    delegate.gotDataFromServer("") //parameter is your data
            },
            failure: { (operation , error) in
               print ("error occurred")
        })
    }
}

关于ios - 快速从调用者到被调用者的回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35318744/

相关文章:

ios - UIImagePickerController导入图像

swift - 如何在新对象的属性上设置 didSet

ios - 使用ARKit读取iOS光传感器

ios - iOS 上 GMUClusterRenderer(谷歌地图集群)的滚动/缩放体验非常慢

javascript - 尽管 json 给出了错误的数据,但从 API 中获取内容

c# - 使用 oData 忽略 POST 中的 JSON 属性

api - Chatbase集成仪表板

ios - 在 UIWebView 中检测键盘按下

ios - 为什么一个对象不能在 ios 中有一个委托(delegate)列表

ios - 强制旋转 UIViewController