2016-06-13 10 views
0

In meiner App habe ich versucht, verschiedene Klasse für API-Aufruf zu machen. Klicken Sie auf den Login-Button und wählen Sie die Methode der anderen Klasse. aber wenn ich zu einem anderen Viewcontroller von dieser anderen Klasse gehen will, stürzt es ab.Wie gehe ich weiter ViewController

hier ist mein Code in loginViewController

let mydata = DataControllerLogin() 
    mydata.login(txtemail.text!,password: txtPassword.text!) 

class DataControllerLogin: UIViewController { 

func login(username:String,password:String) 
{ 
    if Reachability.isConnectedToNetwork() == true 
    { 
     let url = "\(basicURL)login" 
     let param : [String : AnyObject] = [ 

      "email" : username, 
      "password" : password 
     ] 

     Alamofire.request(.POST, url, parameters: param, encoding: .JSON).responseObject(completionHandler: { (response:Response<LoginCode, NSError>) in 

      if (response.result.value != nil) 
      { 

       let LoginCode = response.result.value 

       let message = LoginCode?.Message 
       let detail = LoginCode?.result 

       if (LoginCode?.Status == 1) 
       { 
        let controller : LoginViewController = self.storyboard?.instantiateViewControllerWithIdentifier("LoginViewController") as! LoginViewController 
        self.navigationController?.pushViewController(controller, animated: true) 

        SVProgressHUD.dismiss() 
       } 
       else 
       { 
        alertViewShow(self, title: "Sorry", message: message!) 
        SVProgressHUD.dismiss() 

       } 
       if let threedayForecast = LoginCode?.result { 

        print(threedayForecast.FirstName) 

       } 
      } 
      else 
      { 

      } 
     }) 
    } 
    else { 
     alertViewShow(self, title: "No Internet Connection", message: "Make sure your device is connected to the internet.") 
    } 
} 
} 

aber seine immer Absturz auf der Linie, wo i Viewcontroller definieren.

let controller : LoginViewController = self.storyboard?.instantiateViewControllerWithIdentifier("LoginViewController") as! LoginViewController 
self.navigationController?.pushViewController(controller, animated: true) 

seine zeigt Fehler wie

exc_bad_instruction (code=exc_i386_invop subcode=0x0) 

Wenn Sie also wissen lassen Sie es mich wissen, was das Problem ist?

+1

Prüfen LoginViewController hat LoginViewController im Storyboard? –

+0

bereits überprüft, dass sein eine gleiche Kennung –

+1

Ihre „DataControllerLogin“ ist nicht im Stapel oder nicht in der Navigation-Controller verfügen. –

Antwort

0

Schreiben Sie dies am Anfang der Datei.

import UIKit 
import Alamofire 
import SwiftyJSON 

typealias SOAPICompletionHandler = (code:Int, error:NSError?, response:NSDictionary?) -> Void 

unten Methode in der Datei hinzufügen: -

func callApi(strApiName:String, param : [String : AnyObject]?, type:String, header:[String : String]?, completionHandler:SOAPICompletionHandler) { 
     //let strURL : String = BASEURL+"/"+strApiName 
     let strURL = strApiName; 
     if type == POSTREQ { 
      Alamofire.request(.POST, strURL, parameters: param, encoding: .JSON, headers: header).responseJSON(completionHandler: { (responseData) -> Void in 
       let isSuccess = JSON(responseData.result.isSuccess) 
       if isSuccess { 
//     let swiftyJson = JSON(responseData.result.value! as! NSDictionary) as! AnyObject 
        completionHandler(code: 1, error: nil, response: responseData.result.value! as? NSDictionary) 
       } else { 
        let error = responseData.result.error! as NSError 
        completionHandler(code: 0, error: error, response: nil) 
       } 
      }) 
     } else if type == GETREQ { 
      Alamofire.request(.GET, strURL, parameters: param, encoding: .JSON, headers: header).responseJSON(completionHandler: { (responseData) -> Void in 
       let isSuccess = JSON(responseData.result.isSuccess) 
       if isSuccess { 
//     let swiftyJson = JSON(responseData.result.value! as! NSDictionary) 
        completionHandler(code: 1, error: nil, response: responseData.result.value! as? NSDictionary) 
       } else { 
        let error = responseData.result.error! as NSError 
        completionHandler(code: 0, error: error, response: nil) 
       } 
      }) 
     } else if type == PUTREQ{ 

      Alamofire.request(.PUT, strURL, parameters: param, encoding: .JSON, headers: header).responseJSON(completionHandler: { (responseData) -> Void in 
       let isSuccess = JSON(responseData.result.isSuccess) 
       if isSuccess { 
        //     let swiftyJson = JSON(responseData.result.value! as! NSDictionary) 
        completionHandler(code: 1, error: nil, response: responseData.result.value! as? NSDictionary) 
       } else { 
        let error = responseData.result.error! as NSError 
        completionHandler(code: 0, error: error, response: nil) 
       } 
      }) 

     } else if type == DELETEREQ{ 

      Alamofire.request(.DELETE, strURL, parameters: param, encoding: .JSON, headers: header).responseJSON(completionHandler: { (responseData) -> Void in 
       let isSuccess = JSON(responseData.result.isSuccess) 
       if isSuccess { 
        //     let swiftyJson = JSON(responseData.result.value! as! NSDictionary) 
        completionHandler(code: 1, error: nil, response: responseData.result.value! as? NSDictionary) 
       } else { 
        let error = responseData.result.error! as NSError 
        completionHandler(code: 0, error: error, response: nil) 
       } 
      }) 

     } 
     else if type == PATCHREQ{ 

      Alamofire.request(.PATCH, strURL, parameters: param, encoding: .JSON, headers: header).responseJSON(completionHandler: { (responseData) -> Void in 
       let isSuccess = JSON(responseData.result.isSuccess) 
       if isSuccess { 
        //     let swiftyJson = JSON(responseData.result.value! as! NSDictionary) 
        completionHandler(code: 1, error: nil, response: responseData.result.value! as? NSDictionary) 
       } else { 
        let error = responseData.result.error! as NSError 
        completionHandler(code: 0, error: error, response: nil) 
       } 
      }) 

     } 
    } 

müssen Sie Alamofire und SwiftyJSON hinzuzufügen.

Hoffnung für das Beste.

+0

zu Viewcontroller ich weiß nicht, warum, aber seine mich Viewcontroller zu definieren, nicht erlaubt. seine gibt mir Fehler fatale Fehler: unerwartet gefunden null, während einen optionalen Wert Abwickeln –