2015-08-05 2 views
-1

Когда я запускаю свое приложение в симуляторе IOS, все работает нормально, в том числе вход в систему и регистрация действий. Теперь, когда я развертываю приложение на моем фактическом устройстве IOS, все работает соответственно, пока я не попытаюсь выполнить те же действия входа и регистрации. Действие приложения закрывается, однако при повторном открытии пользователь все еще вошел в систему или зарегистрировался.Ошибка кодирования развертывания устройства Xcode

здесь логика для моего логина:

@IBAction func Login(sender: AnyObject) { 
     activityIND.hidden = false 
     activityIND.startAnimating() 

     var userName = usernameText.text 
     var passWord = passwordText.text 

     PFUser.logInWithUsernameInBackground(userName, password: passWord) { 
      (user: PFUser?, error: NSError?) -> Void in 
      if user != nil { 
       dispatch_async(dispatch_get_main_queue()) { 
        self.performSegueWithIdentifier("loginSucess", sender: self) 
       } 
      } else { 
       self.activityIND.stopAnimating() 

       if let message: AnyObject = error!.userInfo!["error"] { 
        self.message.text = "\(message)" 
       } 
      } 
    } 
} 

здесь логика для моего знака вверх:

func processSignUp() { 
     var userUsername = usernameTxt.text 
     var userEmailAdress = emailTxt.text 
     var userPassword = passwordTxt.text 
     var confirmPassword = confirmTxt.text 
     var yes = false 
     var no = false 




     //start activity indicator 
     activityIndicator.hidden = false 
     activityIndicator.startAnimating() 

     //create new user 
     var user = PFUser() 
     user.username = userUsername 
     user.email = userEmailAdress 
     user.password = userPassword 

     //ensure confirm password is equal to password 
     if confirmPassword == userPassword { 
      yes = true 
     } else { 
      let passAlert = UIAlertController(title: "Sign Up Failed", message: "Sorry, your passwords are not matching", preferredStyle: UIAlertControllerStyle.Alert) 
      passAlert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)) 
      self.presentViewController(passAlert, animated: true, completion: nil) 
      self.activityIndicator.stopAnimating() 
     }; if userUsername == "" || userEmailAdress == "" || userPassword == "" || confirmPassword == "" { 
      let blankAlert = UIAlertController(title: "Sign Up Failed", message: "Sorry, some fields are blank", preferredStyle: UIAlertControllerStyle.Alert) 
      blankAlert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)) 
      self.presentViewController(blankAlert, animated: true, completion: nil) 
      self.activityIndicator.stopAnimating() 
     } else { 
      no = true 
     }; if yes && no { 

     user.signUpInBackgroundWithBlock { (
      success: Bool, error: NSError?) -> Void in 
      if error == nil { 

       dispatch_async(dispatch_get_main_queue()) { 
        self.performSegueWithIdentifier("goToTab", sender: self) 
       } 
      } else { 

       self.activityIndicator.stopAnimating() 
       if let message: AnyObject = error!.userInfo!["error"] { 
        self.message.text = "\(message)" 
       } 
      } 
      } 
     } 
    } 

Я сомневаюсь, что есть проблема с любой из логики потому что процессы работают, они просто сбой, когда я запускаю его через свое реальное устройство. Теперь у меня около 22 предупреждений, отличающихся от неуместных представлений, неподдерживаемых конфигураций и неоднозначных макетов, но, как я уже сказал, несмотря на эти предупреждения, приложение работает нормально, и все элементы моего пользовательского интерфейса размещены так, как я их желал. Какая проблема?

+0

«Приложение закрывается» Также называется крушением! И он оставляет журнал сбоя в консоли. Что он говорит? На какой линии это происходит? – matt

+0

Uh huh. Но вы все еще не ответили на мой вопрос: что такое крушение и где? – matt

+0

Ух, у вас есть «около 22 предупреждений», исправьте их. Также запустите анализатор и исправьте все найденные жалобы. Хороший код не содержит предупреждений. – zaph

ответ

0

Вы говорите

dispatch_async(dispatch_get_main_queue()) { 

Это предполагает, что Вы думаете, этот код работает в фоновом потоке, так что вам нужно, чтобы выйти в основной поток. Это не необоснованное предположение. Но тогда вы говорите:

self.activityIndicator.stopAnimating() 
if let message: AnyObject = error!.userInfo!["error"] { 
    self.message.text = "\(message)" 
} 

Здесь у вас нетdispatch_async на основной поток - так что если вы делаете это на фоне потока, эти линии являются незаконными и плохие вещи могут случиться.

+0

, что бы вы предложили мне сделать? –

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