2016-06-13 3 views
0

В моем приложении я попытался сделать другой класс для вызова api. например, нажать кнопку входа в систему и вызвать метод разного класса. но когда я хочу перейти к другому диспетчеру просмотра из этого другого класса, он получит крах.как перейти на следующий viewController

вот мой код в 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.") 
    } 
} 
} 

но его получение аварии на линии, где я есть определить ViewController.

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

его показ ошибок как

exc_bad_instruction (code=exc_i386_invop subcode=0x0) 

так что если вы знаете, пожалуйста, дайте мне знать, что это проблема?

+1

Check LoginViewController имеет идентификатор LoginViewController в раскадровке? –

+0

уже проверял, что у его же идентификатора –

+1

ваш «DataControllerLogin» не находится в стеке или нет в контроллере навигации. –

ответ

0

Напиши это в начале файла.

import UIKit 
import Alamofire 
import SwiftyJSON 

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

Добавить ниже метод в файле: -

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) 
       } 
      }) 

     } 
    } 

вам нужно добавить Alamofire и SwiftyJSON.

Надежды на лучшее.

+0

. Я не знаю, почему, но это не позволило мне определить viewcontroller. это дает мне ошибку фатальной ошибки: неожиданно найдено нуль при развертывании необязательного значения –

Смежные вопросы