繁体   English   中英

Swift中的代码块:返回错误“无法转换为”

[英]block in Swift : return error “ is not convertible to ”

我犯了一个错误,但看不到如何解决。 我想从GameScene加载所有资产,并以完成方式发送一个Bool。 我使用typealias:是否应该将两个文件(gameScene和gameController)重命名两次?

然后我在这行GameScene.loadSceneAssetsWithCompletionHandler{上出现错误:

((Bool)-> Void)不能转换为'GameScene'

这是代码:

    //gameController:
    typealias OnComplete = (Bool) -> ()
    override func viewDidLoad() {
        super.viewDidLoad()

        GameScene.loadSceneAssetsWithCompletionHandler{ (success:Bool)->Void in
            println("2/ yes")
            return
        }



    //gameScene : rewrite typealias? 
    typealias OnComplete = (Bool) -> ()

    func loadSceneAssetsWithCompletionHandler( completion:OnComplete ) {
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), { () -> Void in
            self.loadSceneAssets()

            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                println("1/ yes")
                completion(true)
            })//main
        })//global
    }

我读了一些说要添加“返回”的线程,但是这里并不能解决错误。

谢谢

它几乎可以正常工作,但是您在这里遇到了一些错误。 首先,您不能重新声明typealias 第二,将loadSceneAssetsWithCompletionHandler设置为实例函数时,将其作为类函数调用。 注意事项变更:

typealias OnComplete = (Bool) -> ()
class GameController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        GameScene.loadSceneAssetsWithCompletionHandler { success in
            println("2/ yes")
            return
        }
    }

}


class GameScene:  UIViewController {

    func loadSceneAssets() {

    }

    class func loadSceneAssetsWithCompletionHandler( completion:OnComplete ) {
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)) {
           let gameScene = GameScene()
           gameScene.loadSceneAssets()

            dispatch_async(dispatch_get_main_queue()) {
                println("1/ yes")
                completion(true)
            }
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM