У меня проблема с новыми параметрами "throws" - "try".
Я получаю сообщение об ошибке, чтобы добавить эти слова, поэтому я добавил «броски» в конце функции IBAction.
@IBAction func loginButtonPressed(sender: AnyObject)throws {//code here}
Внутри я занимаюсь какими-то не относящимися к делу вещами, а затем это:
let jsonData:NSDictionary = try NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers ) as! NSDictionary
После этого ошибок нет, но когда я запускаю приложение и нажимаю на кнопку, приложение вылетает с кодом
когда я делаю некоторые точки останова и удаляю «броски», приложение не падает. Я действительно не знаю, что теперь делать .. Я надеюсь, что кто-то может мне помочь!
Полный код:
В Obj-C
@IBAction func loginButtonPressed(sender: AnyObject)throws {//code here}
является синтаксическим сахаром для параметра Obj-C let jsonData:NSDictionary = try NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers ) as! NSDictionary
.
@IBAction func loginButtonPressed(sender: AnyObject)throws {
var name:NSString = textFieldName.text!
let pass:NSString = textFieldPw.text!
if ( name.isEqualToString("") || pass.isEqualToString("") ) {
let loginFailed = UIAlertView(title: "Failed to Signup",
message: "Please fill in all Textfields",
delegate: nil,
cancelButtonTitle: "OK")
loginFailed.show()
} else {
let post:NSString = "username=\(name)&password=\(pass)"
NSLog("PostData: %@",post);
let url:NSURL = NSURL(string: "my url")!
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")
var reponseError: NSError?
var response: NSURLResponse?
var urlData: NSData?
do {
urlData = try NSURLConnection.sendSynchronousRequest(request, returningResponse:&response)
} catch let error as NSError {
reponseError = error
urlData = nil
}
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);
let jsonData:NSDictionary = try NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers ) as! NSDictionary
let success:NSInteger = jsonData.valueForKey("success") as! NSInteger
//[jsonData[@"success"] integerValue];
NSLog("Success: %ld", success);
if(success == 1)
{