- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要从“dataTaskWithRequest”中获取变量“response”。现在,找不到“response”,因为它在括号之外。我怎样才能确保将响应变量传递给 UIAlert?谢谢
这是我的代码:
@IBAction func buttonCreateAccount(sender: AnyObject) {
let request = NSMutableURLRequest(URL: NSURL(string: "http://www.example.com/createaccount.php")!)
request.HTTPMethod = "POST"
let postString = "user_name=\(username.text!)&email=\(email.text!)&password=\(password.text!)"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
print("error=\(error)")
return
}
print("response = \(response)")
let response = String(data: data!, encoding: NSUTF8StringEncoding)
print("responseString = \(response)")
}
task.resume()
//problem is here. 'response' variable cannot be taken from above. i need it to be taken from above.
if response == "Username taken" {
if let getModernAlert: AnyClass = NSClassFromString("UIAlertController") { // iOS 8
let myAlert: UIAlertController = UIAlertController(title: "Registration", message: response, preferredStyle: .Alert)
myAlert.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
self.presentViewController(myAlert, animated: true, completion: nil)
} else { // iOS 7
let alert: UIAlertView = UIAlertView()
alert.delegate = self
alert.title = "Registration"
alert.message = "Testing"
alert.addButtonWithTitle("OK")
alert.show()
}
} else {
if let getModernAlert: AnyClass = NSClassFromString("UIAlertController") { // iOS 8
let myAlert: UIAlertController = UIAlertController(title: "Registration", message: response, preferredStyle: .Alert)
myAlert.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
self.presentViewController(myAlert, animated: true, completion: nil)
} else { // iOS 7
let alert: UIAlertView = UIAlertView()
alert.delegate = self
alert.title = "Registration"
alert.message = "Testing"
alert.addButtonWithTitle("OK")
alert.show()
self.dismissViewControllerAnimated(true, completion: {});
}
}
}
最佳答案
dataTaskWithRequest
运行异步。您不会立即收到回复。将它分成两个函数:
@IBAction func buttonCreateAccount(sender: AnyObject) {
let request = NSMutableURLRequest(URL: NSURL(string: "http://www.example.com/createaccount.php")!)
request.HTTPMethod = "POST"
let postString = "user_name=\(username.text!)&email=\(email.text!)&password=\(password.text!)"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
print("error=\(error)")
return
}
print("response = \(response)")
let response = String(data: data!, encoding: NSUTF8StringEncoding)
print("responseString = \(response)")
// Now that the response is ready, call the other function to handle it
handleResponse(response)
}
task.resume()
}
func handleResponse(response: String) {
if response == "Username taken" {
if let getModernAlert: AnyClass = NSClassFromString("UIAlertController") { // iOS 8
let myAlert: UIAlertController = UIAlertController(title: "Registration", message: response, preferredStyle: .Alert)
myAlert.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
self.presentViewController(myAlert, animated: true, completion: nil)
} else { // iOS 7
let alert: UIAlertView = UIAlertView()
alert.delegate = self
alert.title = "Registration"
alert.message = "Testing"
alert.addButtonWithTitle("OK")
alert.show()
}
} else {
if let getModernAlert: AnyClass = NSClassFromString("UIAlertController") { // iOS 8
let myAlert: UIAlertController = UIAlertController(title: "Registration", message: response, preferredStyle: .Alert)
myAlert.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
self.presentViewController(myAlert, animated: true, completion: nil)
} else { // iOS 7
let alert: UIAlertView = UIAlertView()
alert.delegate = self
alert.title = "Registration"
alert.message = "Testing"
alert.addButtonWithTitle("OK")
alert.show()
self.dismissViewControllerAnimated(true, completion: {});
}
}
}
关于Swift UIAlert - 从 dataTaskWithRequest 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37403024/
我的 iOS swift 应用程序出现奇怪的错误。编译器在第一行提示: let task = session.dataTaskWithRequest(request) { data, response
我正在使用 swift 创建一个 IOS 应用程序。最近,我遇到了一个奇怪的错误。我正在尝试检查 url 是否有效,因此,我正在使用 url 创建请求并检查响应。我使用 NSUrlSession 的
我必须创建一个应用程序来恢复 API 中的数据,为此我在请求中使用了 NSURLSession.sharedSession 和 dataTaskWithRequest。 我设法恢复了所有信息,但我不明
public func dataTaskWithRequest(request: NSURLRequest, completionHandler: (NSData?, NSURLResponse?,
如何等待 dataTaskWithRequest 完成?网络抓取完全结束后,我需要执行一些任务。 最佳答案 如果确实需要同步请求,可以使用信号量。 我在 NSURLSession 上实现了一个小类来提
在我的应用程序中,用户点击标记,我需要调用网络服务才能获取要显示的信息。我使用 NSURLSession.dataTaskWithRequest 然后在主队列上调用dispatch_async以向用户
我正在尝试制作一个通用类,该类将从 URL 读取 JSON 数据,并使用从 JSON 数据创建的 NSDictionary 执行回调。我已经创建了一个静态类来执行该功能,但它似乎在 dataTaskW
这个问题在这里已经有了答案: How can I get the Data from NSURLSession.sharedSession().dataTaskWithRequest (2 个答案)
我有以下代码: var resultData:NSData? task = session!.dataTaskWithRequest(request) { (data: NSData!, respon
我目前正在像往常一样开发一个 WS 调用,但我不知道为什么这只在我第一次调用它时有效,数据第一次有值(value),但如果我再次调用它,它返回 nil。如果我查看响应,我可以看到它在数据为 nil 时
这是我的代码: let targetURL = NSURL(string: self.urlStringForRequestChannelDetails) let request =
我有这个函数负责 API 调用 (makeAPICall),当 httpResponse.statusCode != 200< 时,我想为某些 API 响应抛出错误。问题是,据我所知,NSURLSes
我是 iOS 编程的新手,正在尝试创建我的第一个应用程序。我正在使用 从服务器获取一些数据 var task = NSURLSession.sharedSession().dataTaskWith
我有一个安全的 webView,它显示客户加载他的钱包。我传递安全信息 MPIN(如一次性密码)。有问题 @IBOutlet weak var loading: UIActivityIndicator
我有一个方法,它为我解析 JSON,然后在闭包中加载图像并将其保存到磁盘。该方法在 viewDidLoad 中被调用。然后加载表。问题是,当表格加载时,它里面只有一个单元格,因为 dataTaskWi
我想填充一个UITableViewController,因此在我的viewDidLoad中我有以下代码: override func viewDidLoad() { let rc = Rest
我在 Swift 中从 AFNetworking 2.5 迁移到 3.0,并且遇到了 dataTaskWithRequest 方法的问题。此方法位于 AFHTTPSessionManager 父类(s
当我想将 mysql 数据库中的数据填充到类对象中时,我的问题出现了。我试图返回一个对象数组,它返回 nil,然后它以某种方式填充自己。在返回空白数组之前如何使其填充? 这是我的代码和代码输出的屏幕截
我知道这个问题之前已经被问过几十次了,但不幸的是我对 Swift 的了解不够,无法根据我的问题调整这些答案。 基本上,我有一个函数可以向服务器上的 php 脚本发送 POST 请求,但接收响应的时间似
如有必要,我会尝试比较文件(图 block ),以替换手机上的旧文件和网站上的新文件。但是 func pathDir 中的 returnPathFile 被分配了对文件的引用,而无需等待检查并下载新文
我是一名优秀的程序员,十分优秀!