所以这是造成问题的一段代码。它给了我一个致命的错误,并说可选值为nil。
我该如何解决这个问题?这仅在我输入第一个字段(名称字段)然后提交时才会起作用,它会弹出我的数据库。但是,当我填写多个字段时,它会崩溃。
@IBAction func registerButtonTapped(sender: AnyObject) {
let strURL: String = "http://www.blabla.com.eg/blabla.php?name=\(nameField.text!)&company=\(companyField.text!)&email=\(emailField.text!)&phonenumber=\(phoneNumberField.text!)"
let dataURL: NSData = NSData(contentsOfURL: NSURL(string: strURL)!)!
let strResult: String = String(data: dataURL, encoding: NSUTF8StringEncoding)!
print("\(strResult)")
self.dismissViewControllerAnimated(true, completion: nil)
}
答案 0 :(得分:0)
当您尝试访问时,您的问题是您的一个(或多个)选项为零。如果您正在进行快速开发,了解选项很重要,我建议您阅读文档。
let dataURL: NSData = NSData(contentsOfURL: NSURL(string: strURL)!)!
let strResult: String = String(data: dataURL, encoding: NSUTF8StringEncoding)!
在上面的代码中,当你使用!
时,你很快就会明白你是100%确定可选项包含一个值。在您构建网址NSURL(strUrl)!
或调用NSData(...)
构造函数并使用!
展开其结果时,可能会出现问题。
尝试这样的事情:
if let url = NSURL(string: strURL) {
if let data = NSData(contentsOfURL: url) {
var strResult = String(data: data, encoding: NSUTF8StringEncoding)
print(strResult ?? "Something Went Wrong")
}
else { // get rid of this else when you find your issue
print("Could not instantiate an NSData object out of that url")
}
}
else { // get rid of this else when you find your issue
print("Your URL is nil!, check the strUrl")
}
这里,我们首先打开NSURL,因为NSURL(字符串)构造函数返回一个可选项(您传递的字符串可能是无效的URL)。然后,我们打开NSData对象,然后在打印时合并strResult(因为它也是可选的)。