2016-05-20 11 views
25

昨日Firebaseをアップグレードしたところ、非常に異常な問題が発生しました。私がシミュレータを実行すると、すぐにエラーが発生します。 "Segmentation fault:11"エラーを説明する何百行ものコード行ですが、絶対に役に立たないものです。このエラーから、手がかりを与えているかもしれない唯一のことは、最下部にあることです。それは言う:アップグレードされたFirebase - すぐにコンパイルエラーが発生する

1. While loading members for 'ProfileTableViewController' at <invalid loc> 
    2. While deserializing decl #101 (PATTERN_BINDING_DECL) 
    3. While deserializing decl #2 (VAR_DECL) 

私はちょうど上記の入力エラーは一貫していません。上記のビューコントローラは、Firebaseを使用している3つのView Controller間を回転します。

この問題を解決するために、私はProfileTableViewControllerクラスのすべてのコードをコメントアウトしましたが、まだそのView Controllerを参照するエラーが発生しました。ビューコントローラで実行されるコードは、

import UIKit 
    import Firebase 
    import FirebaseDatabase 

(他のビューコントローラでもFirebaseAuthを使用しています)でした。

問題を解決するには、「クリーン」を押し、xcodeを再起動し、起動時にもう一度クリーンアップしてからプログラムを実行する必要があります。プログラムのコードを変更しない限り、すべて正常に動作します。たとえ私がコメントを追加しても、エラーは再び表示されます。

xcodeを閉じてコードを2行書くたびに再起動する必要はありません。アプリストアにアップロードするときに問題が発生することが心配です。

私はXCodeの7.3.1を使用していますし、私のデプロイメント・ターゲットは9.3

あなたが大幅に高く評価されて与えることができます任意の洞察力です!ありがとうございました!

+0

成功しました*コンパイラは "Segmentation fault:11"を生成しますか? – luk2302

+0

問題のナビゲータに自分のアプリ名、「Swift Compile Error」というドロップダウンメニュー、「Signal:segmentation fault:11でコマンドが失敗しました」というドロップダウンメニューが表示されます コンパイラはすべてのView Controller次にこれで始まるエラーがあります。 MergeSwiftModule normal arm64 –

+0

エラーを再現できます。このエラーは、2つの異なるView Controllerでデータベースを参照しようとするたびに作成されます。私は、 "var ref:FIRDatabaseReference!"を使ってProfileTableView Controllerのリファレンスを宣言します。 viewWillAppearメソッドでref = FIRDatabase.database()で参照を設定します。参照() 同じことを別のビューコントローラで行うと、エラーが再現されます。それがプログラムで2回言及されるとすぐにエラーになります。 –

答えて

20

私はそれを理解することができました!私のココアポッドは最新ではありませんでした。すぐに私は戻って、端末に最新のCocoa Podをインストールしてから、このアプリのポッドファイルを更新しました。このエラーは消えました。

プロセス:

オープン端子

sudo gem install cocoapods 

(Cocoapods更新)端子で、次いで、appフォルダに移動します。必要に応じて

open -a xcode podfile 

は、podfileに変更を加えます。何も変更する必要はありませんでした。保存して終了。

pod update 

ターミナルオープン.xcworkspaceファイルとTAダで

+0

ありがとうございました! – justColbs

+0

ありがとうございました.... –

3

これは本当に私を凶暴にしています。私はすべての作品機能でそれを使用する場合は

func ref() -> FIRStorageReference { 
    return FIRStorage.storage().reference() 
} 

FIRStorage.storage().reference().dataWithMaxSize(... 

はこれを理解するために時間を要した

このコードは、前述のクラッシュの原因となります。エラーメッセージは、別の場所を指しています。これはおそらく私のキャリア全体で最も不満なデバッグ経験でした。

+0

lol ... same here buddy – Mehul

3

私はこの問題で私の頭を抜き出していました。 私はEric Duffettの答えを試したが運がなかった。

FirebaseAuthの問題であるとわかりました。 ポッド更新

  • FirebaseAuth
  • Podfileから更新ポッドがFirebaseAuthをインポートする(一番下) their siteから
  • フォローREADMEファイルをFirebaseフレームワークをダウンロードして削除

    1. :私がやったことは、このましたプロジェクト内で手動で(FirebaseAuth.frameworkとGoogleNetworkingUtilities.frameworkをインポートする必要があります)
    2. クリーン - 構築とこれ以上のセグメンテーションフォールト11エラーこれが誰かを助ける

    希望。

  • +0

    ありがとう、これはCocoaPodsとリファクタリングを更新しようとした後に私のために働いた唯一のものでした。 –

    1

    DerivedDataModuleCacheを削除すると、Clean>Buildが働いていました。

    0

    私は私のために働く別の解決策を考え出しました。私は、FIRUserのようなFirebase固有の変数を、import Firebaseまたはimport FirebaseAuthのないファイルに返すカスタム関数をいくつか持っていました。データサービスメソッドを別のファイルに保存するのが好きなので、代わりにFIRUser.uidのようにStringsを返すように関数を変更しました。これで、コンパイラの警告/クラッシュがなくなりました。

    0

    setValueの完了ブロックパラメータのタイプを明示的に設定していたときに問題が発生しました。

    FIRDatabase.database().reference(withPath: "test").childByAutoId().setValue("test1") { (error: Error?, ref: FIRDatabaseReference) in } 
    

    errorrefのための型が削除されたときにすべてが正常に動作します。

    3

    あなたのポッドファイルでは、use_frameworksのコメントを外してみてください!

    端末で「ポッドアップデート」を実行します。 Xcodeプロジェクトを再起動します。

    これは私もFirebaseでこの問題を抱えていたセグメンテーションフォールト11

    +0

    ありがとう、その作品。 – iParesh

    1

    で2日間苦労した後、私のためにそれをやりました。

    Xcodeは特定のクラスに不満を持ちます。私はこれだった解決するためにやったあなたの「ProfileTableViewControllerは」 同じように:そのクラス内 コメントすべてFirebase関連の輸入 - >クリーン - >ビルド(もちろん多少の誤差だ) - >のコメントを解除する - >クリーン - >ビルドは

    関連する問題