【发布时间】:2015-05-06 19:20:36
【问题描述】:
应该是什么 我有一个用户名字段。当输入用户名并单击 sendButton 时,将使用 asynchronousRequest 作为 JSON 文件获取用户数据。 点击 sendButton 后,我想显示一个 ActivityIndicator。 发出请求时,UI 仍应是响应式的。
现在的情况 我单击 sendButton 并且 UI 冻结。甚至 ActivityIndicator 也不会显示。
代码
登录VC:
func buttonTouchedUpInside(sender: UIButton) {
toggleActivityIndicatorVisibilityOn(true)
LoginManager.sharedInstance.checkUserForCredentials(username: textFieldLogin.text, password: "")
toggleActivityIndicatorVisibilityOn(false)
}
func loginManagerDidFinishAuthenticationForUser(userData: [String:String]?){
// Delegate Method, which works with the fetched userData.
}
登录管理器
func checkUserForCredentials(#username: String ,password: String) -> Void {
let url = NSURL(string: "\(Config.checkCredentialsUrl)username=\(username)")
let request = NSURLRequest(URL: url!)
NSURLConnection.sendAsynchronousRequest(request, queue: .mainQueue()) { (response, data, error) -> Void in
if error != nil {
//Display error-message
}
var error : NSError?
let json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers, error: &error) as? [String:String]
self.delegate?.loginManagerDidFinishAuthenticationForUser(json)
}
}
简而言之:我希望在后台发出请求,显示 Activityindicator 并且 UI 保持响应。异步请求成功获取json后,调用委托方法
【问题讨论】:
标签: swift asynchronous nsurlrequest nsoperationqueue