2016-04-02 23 views
0

イムfirebaseに認証システムに組み込まれたので、Firebase SWIFT IOSがシステムエラーアサーション/ 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> 

インラインエラー以下は同じコンソールエラーの両方で同じです

編集:私はそれがフレームワーク内の私のアプリのポッドディレクトリにあることに気付きました、そして、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:私は周りを見回しています、少なくとも最近のアイオス9のようなアプリを作るたびに私はこれを混乱させています私はフィナーレプロジェクトをダウンロードした2つの別々のアプリを見たことがあります。ポッドディレクトリ(firebaseとios 9.2が作成され、firebaseのすべてのフレームワークを持っていた場所)アプリケーション/ Xcode.app /コンテンツ/開発者/プラットフォーム/ iPhoneOS.platフォーム/ Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/CFNetwork.framework "と書かれています。ちょっと変更ボタンに行くとxcodeのパッケージ内容に入る必要があり、私は奇妙見つけたことの一つ

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

私は私が時にアプリがクラッシュする指示を受けるのはここ

The inline error when I am redirected

Second files inline error (same)

があると私は(2箇所)エラーが出ることをやらせますそのエラーは、エラーが発生して以来、私はそれを押したことがないので、私はログアウトボタンが奇妙です。

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

は、ユーザーID番号は、ほとんど皆無で、一般的には、この

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ですそれは決してAuth'dで始まることがないので、今ではありません。なぜボタンのIBActionが呼び出されているのかわからないが、IBのアクションとアウトレットをチェックする。

はまた、

のvar CURRENT_USER

は少し疑わしいです。

varの名前に基づいて、現在のユーザー(おそらくUser Class?)が含まれていると思います。

しかし、呼び出されると、現在のユーザノード(/ appPath/users/usersノード)へのパスを含むFirebaseオブジェクトが返され、他のユーザデータは返されません。ユーザーがどちらかを認証したときに、入力されたようには見えません。それは意図があったか、またはそれがどこか使用されますが、やっているならば、それはすべての認証データを含んでいないので、この

CURRENT_USER.unauth() 

が問題になる可能性がある場合

わかりません。