func checkIfUserExistsInDB(username: String) -> Nsstring{ print ("IN") var info: Nsstring = "" Alamofire.request(.POST,"http://blablabla.com/getuserdata",parameters: ["queryValue": username,],enCoding:.JsON).responseJsON { request,response,result in switch result { case .Success(let JsON): info = Nsstring(data: JsON.dataUsingEnCoding(NSUTF8StringEnCoding)!,enCoding: NSUTF8StringEnCoding)! case .Failure(let data,_): print ("IN") if let data = data { info = (Nsstring(data: data,enCoding: NSUTF8StringEnCoding)!) print (info) } } } return info}
但我遇到麻烦同步.我知道制作异步功能(如Alamorfire提供的功能)通常不被接受,但在我的情况下,我必须同步进行.
解决方法 在Swift中实现完成块非常容易.这是带有完成块的功能
func checkIfUserExistsInDB(username: String,completion:(String) -> VoID){ Alamofire.request(.POST,result in switch result { case .Success(let JsON): let info = String(data: JsON.dataUsingEnCoding(NSUTF8StringEnCoding)!,enCoding: NSUTF8StringEnCoding)! completion(info) case .Failure(let data,_): if let errorData = data,info = String(data: errorData,enCoding: NSUTF8StringEnCoding) { completion(info) } } }}
并且可以调用(info是异步返回的字符串)
checkIfUserExistsInDB("string") { (info) in print(info)}总结
以上是内存溢出为你收集整理的ios – 使异步alamofire请求同步全部内容,希望文章能够帮你解决ios – 使异步alamofire请求同步所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)