Swift: 登录成功后跳转到下一个界面
Swift: Segue to next screen when successfully login
我正在尝试:
1. 登录
2. 解析响应
3. 打印响应
4. 转到下一个屏幕
代码
let task = session.dataTaskWithRequest(request) { (data, responseData, error) -> Void in
if let response = responseData as? NSHTTPURLResponse {
statusCode = response.statusCode
print("Response code: \(statusCode)")
}
do {
if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableLeaves) as? NSDictionary {
if let data = json["data"] as? NSDictionary {
if let user = data["user"] as? NSDictionary {
self.loggedUser = User(resp: user)
self.printData(self.loggedUser!)
}
}
}
} catch {
print(error)
err = error
}
if(statusCode != 200) {
let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("Error could not parse JSON: '\(jsonStr)'")
} else {
//print("Everything Looks good: \(responseData)")
self.shouldPerformSegueWithIdentifier("showHomeController", sender: self)
}
}
private func printData(user: User) {
let id = user.id as Int
print("id: \(id)")
print("Parent: \(loggedUser?.userType)")
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showHomeController" {
let homeViewController = segue.destinationViewController as! HomeViewController
homeViewController.user = self.loggedUser
}
}
它不按相同的顺序工作。在解析数据之前,代码正在转到下一个屏幕。
为什么会这样?
将 shouldPerformSegueWithIdentifier 替换为 performSegueWithIdentifier
我正在尝试:
1. 登录
2. 解析响应
3. 打印响应
4. 转到下一个屏幕
代码
let task = session.dataTaskWithRequest(request) { (data, responseData, error) -> Void in
if let response = responseData as? NSHTTPURLResponse {
statusCode = response.statusCode
print("Response code: \(statusCode)")
}
do {
if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableLeaves) as? NSDictionary {
if let data = json["data"] as? NSDictionary {
if let user = data["user"] as? NSDictionary {
self.loggedUser = User(resp: user)
self.printData(self.loggedUser!)
}
}
}
} catch {
print(error)
err = error
}
if(statusCode != 200) {
let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("Error could not parse JSON: '\(jsonStr)'")
} else {
//print("Everything Looks good: \(responseData)")
self.shouldPerformSegueWithIdentifier("showHomeController", sender: self)
}
}
private func printData(user: User) {
let id = user.id as Int
print("id: \(id)")
print("Parent: \(loggedUser?.userType)")
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showHomeController" {
let homeViewController = segue.destinationViewController as! HomeViewController
homeViewController.user = self.loggedUser
}
}
它不按相同的顺序工作。在解析数据之前,代码正在转到下一个屏幕。 为什么会这样?
将 shouldPerformSegueWithIdentifier 替换为 performSegueWithIdentifier