gpt4 book ai didi

ios - 如何在到达返回语句之前快速修改异步 URLrequest 中的数据

转载 作者:行者123 更新时间:2023-11-29 02:05:33 26 4
gpt4 key购买 nike

我已经开始学习 ios 开发一段时间了,我已经达到了尝试从服务器发送和接收数据的部分。我遇到了一个问题,例如,如果我想让用户登录或使用异步连接让他注册。使用 swiftyjson 的数据管理器类的代码示例:

    class func signUp() -> NSString {
var url: NSURL = NSURL(string: "http://localhost/Test/signup.php")!
var request:NSMutableURLRequest = NSMutableURLRequest(URL:url)
var bodyData = "username=Datforis&name=firas&password=123123"
request.HTTPMethod = "POST"
request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding);
var status = "error"
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue())
{

(response, data, error) in
println(response)
if(error != nil){
//handleerror
}
else if data == nil {
println("Server could not be reached please check your internet connection")
status = "connectionerror"
}
else {
println("i'm here")
let json = JSON(data : data)
var msgint : Int = json["status"].int!
status = String(msgint)
println(status)
}
}

println(status + " is current" )


return status //returns status if sign up was successful or not
}

代码将始终返回“error”(默认值),因为在修改状态字符串之前执行了 return 语句。如果我重复相同的代码但使用同步连接它工作正常,但我问的每个人都告诉我要避开同步连接,因为它们在执行时会卡住 UI有没有一种方法可以在不使用同步连接的情况下处理这个问题?或者这是唯一的方法?有没有更好的方法来处理注册/登录请求或任何一般请求?谢谢

最佳答案

我建议你看看this关于完成处理程序的文章。

使用完成处理程序代替返回语句。
完成处理程序将在您的语句完成时调用,而不是在它到达函数末尾时调用。

我之前提到的链接有下面的例子

func hardProcessingWithString(input: String, completion: (result: String) -> Void) {

completion(“we finished!”)
}

这可以用于需要很长时间的数学计算,或者在您的情况下用于 URL 请求。要检索您可以使用的数据

hardProcessingWithString(“commands”) {
(result: String) in
println(“got back: (result)“)
}

关于ios - 如何在到达返回语句之前快速修改异步 URLrequest 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29823195/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com