首页 > 解决方案 > 将完成块从 swift 传递回目标

问题描述

试图从快速代码中获取完成块,但看起来我做错了什么。

我想为我的快速视图控制器复制的 objC 代码TestViewController

我只需要BoolBMError返回完成块

我做错的代码:

TestViewController *changeVC = [[TestViewController alloc] initWithCompletionData:completion ];

我尝试像 objc 函数一样复制的快速代码:

@objc public class TestViewController {

    var completionData: ((Bool, BMErrors?) -> Void)?

    public required init?(coder aDecoder: NSCoder) {
        fatalError("Not implemented")
    }

    @objc public init(completionData completion: ((Bool, BMErrors?) -> Void)?) {
        super.init(nibName: nil, bundle: nil)
        self.completionData = completion
    }

    func verifySuccess(result: QuestionResult, error: BMErrors?) {

        if (result.success) {
            // how to pass completionData
        }
    }

}

标签: objective-cswiftclosuresobjective-c-blocks

解决方案


你可以TestViewController.completionData这样打电话:self.completionData?(false, error)或者self.completionData?(false, nil)如果你不想通过error.


推荐阅读