沮丧 Swift 回调

Frustrated Swift Callback

最近在做一个项目,需要大量的API Async与Server交互,尝试过delegating,但是写了很多delegator不是很优雅。我之前一直在关注 SO 上的所有 'Swift Callback' 线程,仍然坚持。

//First try

func post(url: String, data: String, callback:(result: String) ->Void){
    callback(result: "Completed")
}

func request(url: String, data: String){
    post(url, data, { (result) in
        println(result)
    })
}

request("Hello", "World")

//prints nothing


//second try following threads

func test(txt: String, resolve: (name: String) -> Void) {
    resolve(name: "Dodo")
}
test("hello", {(name: String) in
    println(name)
})

我遗漏了什么,如有帮助将不胜感激

您的代码看起来不错。我 运行 Xcode 7 需要做一些修改,但代码对我有用。如果您在 Playground 中尝试此操作,请确保它确实在执行。我经常发生这样的情况,我希望 print 语句显示一些东西,但是 Playground 卡住了,并且由于错误而没有输出任何东西。

这是对我有用的代码(针对 Swift 2 进行了修改):

func post(url: String, data: String, callback:(result: String) ->Void){
    callback(result: "Completed")
}

func request(url: String, data: String){
    post(url, data: data, callback: { (result) in
        print(result)
    })
}

request("Hello", data: "World")

func test(txt: String, resolve: (name: String) -> Void) {
    resolve(name: "Dodo")
}
test("hello", resolve: {(name: String) in
    print(name)
})

如果您想 运行 在 playground 中运行您的代码,您需要告诉 Xcode 不要退出(以便它可以在后台发出请求并执行异步回调)。

将此附加到您的 playground 应该可以正常工作:

import XCPlayground

XCPSetExecutionShouldContinueIndefinitely()