ios - 从 URLsession 解析 Json 时如何导航到其他 Viewcontroller

标签 ios swift3

1)我有以下内容:
- 供用户输入一些数据(例如用户名)的文本字段
-添加了一个activityIndi​​cator

2)当用户按下键盘的“Return”或“Go”或“Done”键时,它将调用 SendPostRequest 函数,如下代码。

代码没有编译错误。

在 URLSession 内导航是否有任何问题?

问题:

以 NSException 类型的未捕获异常终止

func textFieldShouldReturn( _ textField: UITextField) -> Bool {

 ActivityIndicator.startAnimating()
 SendPostRequest()

}


unc SendPostRequest(user: String ) {
        let Url = String(format: "your url")
        guard let serviceUrl = URL(string: Url) else { return }

        let parameterDictionary = ["username" : "User1"]
        var request = URLRequest(url: serviceUrl)
        request.httpMethod = "POST"
        request.setValue("Application/json", forHTTPHeaderField: "Content-Type")
        guard let httpBody = try? JSONSerialization.data(withJSONObject: parameterDictionary, options: []) else {
            return
        }
        request.httpBody = httpBody

        let session = URLSession.shared
        session.dataTask(with: request) { (data, response, error) in
            if let response = response {
                print(response)
            }
            if let data = data {
                do {
                    let json = try JSONSerialization.jsonObject(with: data, options: []) as! NSDictionary

                   //condition met:
                   let jsonStatus: String! = json["Status"] as String

                   if jsonStatus == "Code123"

                   self.myActivityIndicator.stopAnimating()

                   self.performSegue(withIdentifier:"SegueAcct",sender: self )


                }catch {
                    print(error)
                }
            }
            }.resume()
    }

最佳答案

我认为问题在于完成 block 中的代码是在后台线程上运行的,所以只需像这样在主线程上发布 performSegue

DispatchQueue.main.async {
    self.myActivityIndicator.stopAnimating()

    self.performSegue(withIdentifier:"SegueAcct",sender: self )
}

关于ios - 从 URLsession 解析 Json 时如何导航到其他 Viewcontroller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46785808/

相关文章:

ios - 如何在Objective-C中解析JSONP?

ios - APNS 设备 token 生成不正确

ios - 约束如何以编程方式工作?

iphone - 在 iPhone 应用程序中使用 XML-RPC

ios - 如何使用 Swift 3 在 BWWalkthrough View Controller 中添加标签?

ios - 过滤所有事件的数组并找到哪个事件仍在进行

swift - 在 Swift 中,调用 UINavigationController() 和 UINavigationController.init() 有什么区别?

ios - UIPageViewController 中的 AlertViewController

swift - 我想更改框架的版本。[swift 4/xcode 9]

swift - 在 Swift 3 中将 C 数组 ptr 转换为原生数组