Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift:成功登录后转到下一屏幕_Ios_Swift_Ios9 - Fatal编程技术网

Ios Swift:成功登录后转到下一屏幕

Ios Swift:成功登录后转到下一屏幕,ios,swift,ios9,Ios,Swift,Ios9,我正在尝试: 1.登录 2.解析响应 3.打印响应 4.转到下一屏幕 代码 let task = session.dataTaskWithRequest(request) { (data, responseData, error) -> Void in if let response = responseData as? NSHTTPURLResponse { statusCode = response.statusCode print("Respo

我正在尝试:
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

解析前代码正在分段的确切含义是什么?您的意思是,segue在控制台中显示由
printData()
打印的数据之前发生,还是说segue在
JSONObjectWithData()
返回之前实际执行?