gpt4 book ai didi

php - UIAlertController 无法显示并不断出现错误(Swift、Xcode)

转载 作者:行者123 更新时间:2023-11-28 06:37:54 24 4
gpt4 key购买 nike

我想在从我的 php 服务器获得 jSON 响应后显示一个 UIAlertController,因此在检查响应中是否有返回 ID 时,在 if else 语句中,我写了一个代码来显示 UIAlertController 但我不能让它工作。

这是我的错误片段

断言失败 -[UIKeyboardTaskQueue waitUntilAllTask​​sAreFinished]

我的 IBAction 按钮代码

  @IBAction func btnRegister(sender: AnyObject) {

let parameters = ["name": tfName.text! , "contact": tfContact.text! ,"email": tfEmail.text!] as Dictionary<String, String>
let request = NSMutableURLRequest(URL: NSURL(string:"http://192.168.1.8/safeproject/registerprofile.php")!)

let session = NSURLSession.sharedSession()
request.HTTPMethod = "POST"


//Note : Add the corresponding "Content-Type" and "Accept" header. In this example I had used the application/json.
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")

request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(parameters, options: [])

let task = session.dataTaskWithRequest(request) { data, response, error in
guard data != nil else {
print("no data found: \(error)")
return
}


let successAlert = UIAlertController(title: "Registration Status", message:"Register Success", preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "OK", style: .Default) { _ in })
let failAlert = UIAlertController(title: "Registration Status", message:"Register Fail", preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "OK", style: .Default) { _ in })

// Present the controller

do {
if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary {
print("Response: \(json)")

let id = json["id"]!

if(id.isEqual(""))
{

self.presentViewController(failAlert, animated: true){}
print("User register fail");
}
else
{

self.presentViewController(successAlert, animated: true){}
print("User register success");
}
} else {
let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)// No error thrown, but not NSDictionary
print("Error could not parse JSON: \(jsonStr)")
}
} catch let parseError {
print(parseError)// Log the error thrown by `JSONObjectWithData`
let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("Error could not parse JSON: '\(jsonStr)'")
}
}

task.resume()
}

最佳答案

当您尝试显示警报 Controller 时,您正在处理一个单独的线程,因此您需要在显示它之前切换回来。

if(id.isEqual("")){
NSOperationQueue.mainQueue().addOperationWithBlock {
self.presentViewController(failAlert, animated: true){}
}
}...

关于php - UIAlertController 无法显示并不断出现错误(Swift、Xcode),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38671696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com