2016-04-02 5 views
0

Im пытаются использовать встроенную систему аутентификации в firebase и следовал этому TUT сделать такFirebase стремительные ИОС войти в систему ошибка Assertion не удалось/Exec_BAD_INSTRUNCTION (код = EXC_i386_INVOP, субкодовое = 0x0)

Firebase Login Tutorial

I я в состоянии запустить мое приложение, но когда я иду, чтобы войти и ввести правильный (или недопустимый) адрес электронной почты и пароль, он выходит из строя с этой ошибкой в ​​консоли:

 Assertion failed: (request.URL), function -[FSRWebSocket initWithURLRequest:protocols:queue:andUserAgent:], file /Users/vikrum/dev/git/firebase-client-objc/Firebase/Firebase/Libraries/SocketRocket/FSRWebSocket.m, line 302. 
(lldb)

Когда я ничего не вводите и нажмите войти в систему он падает с этой ошибкой (я есть меры, чтобы предотвратить приложение от сбой из-за этого, possiably сторона аффект большего выпуска):

<pre>fatal error: unexpectedly found nil while unwrapping an Optional value</pre> 

Ошибки инлайн Ниже приведены те же ошибки, что и при ошибках консоли.

Редактировать: Я заметил, что в каталоге pod в моем приложении в структуре, а затем в папках ios содержимое (моя иерархия с красной ошибкой ** LINKhttp: // i .stack.imgur.com/IHCQw.png) выделено красным цветом. Каталогом для 4-х фреймворков был iPhoneOS9.0.sdk, по какой-то причине у меня есть только iPhoneOS.sdk и iPhoneOS9.2.sdk, а также firebase, а другая фрейм под ним имеет странные расположения в каталоге [(Все они идут в это место * * LINKhttp: //i.stack.imgur.com/Z6dX5.png), и я не могу, чтобы жизнь меня выясняла, как это исправить (я не совсем уверен, что это ошибка, из-за которой мое приложение терпит крах после того, как я попытаюсь для входа в систему, но это единственная ошибка, которую я видел, так что это должно быть)

Редактировать 2: я оглядывался, и все последние попытки сделать приложение, по крайней мере, с ios 9, меня сбило с толку из-за этого , я видел 2 отдельных приложения, где я загрузил финальный проект, и я не смог его запустить, потому что в pod dir (все, где для firebase и ios 9.2, когда они были сделаны, и у всех фреймворков для firebase), он сказал: «/ применения/Xcode.app/Содержание/Разработчик/Платформы/iPhoneOS.plat form/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/CFNetwork.framework ", и я не могу его изменить, потому что, когда я перехожу к кнопке изменения маленького размера, мне нужно попасть в содержимое пакета xcode, и это не будет позвольте мне сделать это

The inline error when I am redirected

Second files inline error (same)

Вот где я получаю направлены, когда происходит сбой приложения и я получаю сообщение об ошибке (2 места)

import Foundation  
import Firebase 

let BASE_URL = "https://baseball-pitcher-app.firebaseIO.comΩΩ" 

let FIREBASE_REF = Firebase(url: BASE_URL) 


var CURRENT_USER: Firebase 
{ 
    ***let userID = NSUserDefaults.standardUserDefaults().valueForKey("uid") as! String*** ERROR IN THIS LINE 

    let currentUser = Firebase(url: "\(FIREBASE_REF)").childByAppendingPath("users").childByAppendingPath(userID) 

    return currentUser! 
} 

Одна вещь, которую я нашел странным было то, что ошибка была в e logout, которая является странной, потому что я никогда не нажал ее с момента возникновения ошибки.

import UIKit 
import Firebase 

class LoginViewController: UIViewController, UITextFieldDelegate { 

    @IBOutlet weak var userUsernameTextField: UITextField! 
    @IBOutlet weak var userPasswordTextField: UITextField! 
    @IBOutlet weak var logoutButton: UIButton! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view. 

     self.userUsernameTextField.delegate = self; 
     self.userPasswordTextField.delegate = self; 
    } 

    override func viewDidAppear(animated: Bool) 
    { 
     super.viewDidAppear(animated) 

     if NSUserDefaults.standardUserDefaults().valueForKey("uid") != nil && CURRENT_USER.authData != nil 
     { 
      self.logoutButton.hidden = false 
     } 
    } 


    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func textFieldShouldReturn(textField: UITextField) -> Bool { 
     self.view.endEditing(true) 
     return false 
    } 

    @IBAction func loginButtonTapped(sender: AnyObject) { 

     let email = self.userUsernameTextField.text 
     let password = self.userPasswordTextField.text 

     if email != "" && password != "" 
     { 
      FIREBASE_REF.authUser(email, password: password, withCompletionBlock: { error, authData in 

       if error == nil 
       { 
        NSUserDefaults.standardUserDefaults().setValue(authData.uid, forKey: "uid") 
        print("Logged In :)") 
        self.logoutButton.hidden = false 
       } 
       else 
       { 
        print(error) 
       } 
      }) 
     } 
     else 
     { 
      let alert = UIAlertController(title: "Error", message: "Enter Email and Password.", preferredStyle: UIAlertControllerStyle.Alert) 
      let action = UIAlertAction(title: "Ok", style: .Default, handler: nil) 
      alert.addAction(action) 
      self.presentViewController(alert, animated: true, completion: nil) 
     } 
    } 

    @IBAction func logoutButtonTapped(sender: AnyObject) { 
     CURRENT_USER.unauth()**** ERROR IN THIS LINE 

     NSUserDefaults.standardUserDefaults().setValue(nil, forKey: "uid") 
     self.logoutButton.hidden = true 
    }
+0

Я сделал больше успехов, я верю, но как-то, когда я обновил свои контейнеры, мой Pods_UserLoginAndRegistration.framework лишился всех, кто знает, как я мог его вернуть, я переустановил и обновил стручки и не купил – Branson

+0

Я был в магазине приложений минуту назад и читайте, что у людей возникают проблемы с xcode 7.3 слева и справа с обновлением и запуском и созданием приложений, которые могли бы объяснить причину, но это все еще может – Branson

ответ

0

идента идентификатор, скорее всего, ноль, и вообще лучше ловить случаи, в которых это ноль, как этот

if let userID = NSUserDefaults.standardUserDefaults().valueForKey("uid") as? String { 
    print(userID) //do something with the user id here 
} else { 
    print("The userID was nil.") //avoid the user id. 
} 

И причина второй ошибки в том, что CURRENT_USER, поскольку он никогда не должен начинаться с нуля, теперь равен нулю. Не знаете, почему вызывается IBAction кнопки, но проверяйте действия и выходы в IB.

Кроме того,

вар CURRENT_USER

немного подозреваемого.

Основываясь на имени var, я ожидаю, что он будет содержать текущего пользователя (как, возможно, класс пользователя?).

Однако при вызове он возвращает объект Firebase, который содержит путь к текущему узлу пользователей (/ appPath/users/users node) и никакие другие пользовательские данные. По-видимому, он не заполняется, когда пользователь аутентифицируется.

Не уверен, что если бы это было намерение или если она используется где-то еще, но делает это

CURRENT_USER.unauth() 

может быть проблемой, так как она не содержит каких-либо данных AUTH.