2016-02-19 2 views
1

Я использую swift для отправки сообщения на мой сервер, однако я не могу получить всплывающее окно с предупреждением, которое произойдет, когда оно закончится. Вот код.deallocating не допускается при попытке загрузить представление

func sendSimpleCommand(siteId: Int, command: String) -> Int { 
    Alamofire.request(.GET, commandUrl, parameters: ["site": siteId, "command": command, "device": "ios"]) 
     .responseJSON { response in 
      //print(response.result) // result of response serialization 

      switch response.result { 
      case .Success(_): 
       print("success code back from api server for command sent") 
       let alertView = UIAlertController(title: "Command Sent", message: "Your \(command) has been sent.", preferredStyle: .Alert) 
       let alertAction = UIAlertAction(title: "OK", style: .Default) { _ in 
       } 
       alertView.addAction(alertAction) 
      case .Failure(_): 
       print("FAIL code back from api server for command sent") 
       let alertView = UIAlertController(title: "Connect Error", message: "Network error, please try again", preferredStyle: .Alert) 
       let alertAction = UIAlertAction(title: "OK", style: .Default) { _ in 
       } 
       alertView.addAction(alertAction) 
      } 
    } 
    return 1 
} 




@IBAction func startButtonTouch(sender: UIButton) { 
    let helper = HelperActions() 
    let site = ActiveSite.sharedInstance.siteObject 
    let command: String = "start" 
    sendSimpleCommand(site.id , command: command) 
} 

Теперь, когда я запускаю его, сетевое общение происходит правильно, но затем я получаю сообщение об ошибке, и окно предупреждения никогда не появляется.

Попытка загрузить вид контроллера представления в то время как это deallocating не допускается и может привести к непредсказуемому поведению

+0

Где вы пытаетесь представить его? – dan

+0

в UIViewController – skrite

ответ

0

Просто добавьте одну строку в верхней части кода, чтобы сделать глобальный запрос UIAlertController.

Как и в случае с быстрым, нам не нужно снимать любые виды. Язык Swift использует его на своей стороне.

let alertView : UIAlertController? 

удалить все декларации alertView в классе

Edit

func sendSimpleCommand(siteId: Int, command: String) -> Int { 
Alamofire.request(.GET, commandUrl, parameters: ["site": siteId, "command": command, "device": "ios"]) 
    .responseJSON { response in 
     //print(response.result) // result of response serialization 

     switch response.result { 
     case .Success(_): 
      print("success code back from api server for command sent") 
      alertView = UIAlertController(title: "Command Sent", message: "Your \(command) has been sent.", preferredStyle: .Alert) 
      let alertAction = UIAlertAction(title: "OK", style: .Default) { _ in 
      } 
      alertView.addAction(alertAction) 
     case .Failure(_): 
      print("FAIL code back from api server for command sent") 

      alertView = UIAlertController(title: "Connect Error", message: "Network error, please try again", preferredStyle: .Alert) 
      let alertAction = UIAlertAction(title: "OK", style: .Default) { _ in 
      } 
      alertView.addAction(alertAction) 
     } 
} 
return 1 
} 




@IBAction func startButtonTouch(sender: UIButton) { 
    let helper = HelperActions() 
    let site = ActiveSite.sharedInstance.siteObject 
    let command: String = "start" 
    sendSimpleCommand(site.id , command: command) 
} 
+0

как это сделать, если мне нужно создать экземпляр с атрибутами? – skrite

+0

@skrite попробуйте этот код –

+0

awesome! Огромное спасибо ! – skrite