gpt4 book ai didi

ios - 注册时获取可选值崩溃

转载 作者:行者123 更新时间:2023-11-28 08:31:11 25 4
gpt4 key购买 nike

当我尝试注册时,我得到了正确的回复。但是在获得成功之后。我将崩溃作为可选值。

这是我的完整代码:

   var post:NSString = "name=\(Username)&email=\(Email)&phone=\(phonenumb)&password=\(Password)&address=\(address)"

NSLog("PostData: %@",post);

var url:NSURL = NSURL(string: "http://userregistration.php")!
// let url:NSURL = NSURL(string: "http://userregistration.php")!

let postData:NSData = post.dataUsingEncoding(NSASCIIStringEncoding)!

let postLength:NSString = String( postData.length )

let request:NSMutableURLRequest = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.HTTPBody = postData
request.setValue(postLength as String, forHTTPHeaderField: "Content-Length")
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.setValue("application/json", forHTTPHeaderField: "Accept")


let reponseError: NSError?
var response: NSURLResponse?

do {
let urlData = try? NSURLConnection.sendSynchronousRequest(request, returningResponse: &response)

if ( urlData != nil ) {
let res = response as! NSHTTPURLResponse!;

NSLog("Response code: %ld", res.statusCode);

if (res.statusCode >= 200 && res.statusCode < 300)
{
let responseData:NSString = NSString(data:urlData!, encoding:NSUTF8StringEncoding)!

NSLog("Response ==> %@", responseData);


do {
let jsonData = try NSJSONSerialization.JSONObjectWithData(urlData!, options: []) as! NSDictionary

let success:NSInteger = jsonData.valueForKey("success") as! NSInteger

//[jsonData[@"success"] integerValue];

NSLog("Success: %ld", success);

if(success == 1)
{
NSLog("Sign Up SUCCESS");
//self.dismissViewControllerAnimated(true, completion: nil)
} else {
var error_msg:NSString

if jsonData["error_message"] as? NSString != nil {
error_msg = jsonData["error_message"] as! NSString
} else {
error_msg = "Unknown Error"
}
let alertView:UIAlertView = UIAlertView()
alertView.title = "Sign Up Failed!"
alertView.message = error_msg as String
alertView.delegate = self
alertView.addButtonWithTitle("OK")
alertView.show()

}

} catch let error as NSError {
print("json error: \(error.localizedDescription)")
}



} else {
let alertView:UIAlertView = UIAlertView()
alertView.title = "Sign Up Failed!"
alertView.message = "Connection Failed"
alertView.delegate = self
alertView.addButtonWithTitle("OK")
alertView.show()
}
}

}
}

我在这一行中崩溃了:

 let success:NSInteger = jsonData.valueForKey("success") as! NSInteger

错误是选项值崩溃。我不知道如何处理这个错误。有没有专家给我一些想法或一些解决方案来纠正这个崩溃

最佳答案

始终使用安全解包,并且不要直接尝试解包/转换可以为 nil 的值。

正确的方法是-

if let successVal = jsonData["success"] as? NSInteger {
//Do something with successVal.
}

虽然与您的问题没有直接关系,但想指出您使用的是已弃用的 NSURLConnection API,而不是使用基于 NSURLSession 的 API 进行联网。

谢谢

关于ios - 注册时获取可选值崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38845568/

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