最近,我在一个需要大量API与服务器交互的项目中,我尝试过委托,但写了很多委托人并不是很优雅。我一直在关注所有' Swift Callback' SO之前的线程,仍然坚持。
//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)
})
我错过了什么,任何帮助都会感激不尽
答案 0 :(得分:0)
您的代码看起来很好。我运行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)
})
答案 1 :(得分:0)
如果您想在游乐场中运行代码,则需要告诉Xcode不要退出(以便它可以在后台发出请求并执行异步回调)。
将它添加到你的游乐场应该可以使它工作:
import XCPlayground
XCPSetExecutionShouldContinueIndefinitely()