Skip to main content
 首页 » 操作系统

swift之下面的 Swift block 语法有什么问题

2024年01月01日54youxin

我正在将 AWS S3 服务集成到我基于 Swift 的项目中,但我卡在了下面的 sysntax 中,因为没有关于 API 与 Swift 的用法的描述,所以我试图自己转换代码。

transferManager.download(downloadRequest).continueWithExecutor(BFExecutor.mainThreadExecutor(), withBlock:  
{ (task:BFTask!) -> AnyObject! in 
            println("test") 
        }) 

我遇到以下错误!

Type '()' does not conform to protocol 'AnyObject' 

请您参考如下方法:

我不确定问题出在哪里,但切换到常规 continueWithSuccess 可以。如果您需要 block 在线程上执行,您可以在 block 内使用中央调度。

例如,如果你需要在主UI线程上执行的 block ,你可以这样写

        transferManager.download(downloadRequest).continueWithSuccessBlock({ 
            (task: BFTask!) -> BFTask! in 
            dispatch_async(dispatch_get_main_queue(), { 
                println("test") 
            }) 
            return nil 
        }) 

dispatch ... 只有当你想在一个单独的线程上运行 block 时才需要。