沮丧 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()
最近在做一个项目,需要大量的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()