2016-11-16 2 views
0

レルム2.0.4、3.0.1スウィフト、Xcodeの8.1レルムスウィフト2.0.4ログイン後にクラッシュ()

私はSyncUser.logIn()メソッドを使用した後、次のクラッシュを取得しています:

libC++ abi.dylib:タイプ のキャッチされていない例外で終了するrealm :: IncorrectThreadException:不正なスレッドからアクセスされたレルム。

私はこのような SyncUser.logIn()メソッドを使用するよりも、他の個別のスレッドを使って何を(私の知っていることを)やっていないよ

//AuthForm.swift 
let signUpCredentials = SyncCredentials.usernamePassword(username: ..., password: ..., register: true) 

SyncUser.logIn(with: signUpCredentials, server: serverURL) { user, error in 
    if user == nil { 
    //Error 
    }else{ 
    //Success 
    setupRealm(user: user!) 
    } 
} 

//In another Swift file... 
func setupRealm(user: SyncUser){ 
    // Create the configuration 
    Realm.Configuration.defaultConfiguration = Realm.Configuration(syncConfiguration: SyncConfiguration(user: user, realmURL: realmURL)) 

    // Open the Realm 
    _ = try! Realm() 
} 
クラッシュが、その後発生したときに私のアプリがロードされ、使用しようとし

最初の領域。私の前提は、デフォルト設定で設定された領域とアクセスされる領域が異なることです。

クラッシュ直前のブレークポイントが添付されています。私はすべての例外に対してブレークポイントを設定していますが、クラッシュは私のApp Delegateの一番上に向いています。奇妙なことに

Xcode Breakpoint

、Xcodeで私のアプリを再構築した後、それが動作し、もうクラッシュしません。それはどういうわけかlogInに関連しています。何か案は?

答えて

0

私はそれを最終的に見つけました!私はこのようなメインスレッドのキューにlogIn()閉鎖の内容全体をラップする必要がありました:

SyncUser.logIn(with: signUpCredentials, server: serverURL) { user, error in 
    DispatchQueue.main.async{ 
    if user == nil { 
     //Error 
    }else{ 
     //Success 
     setupRealm(user: user!) 
    } 
    } 
} 

私は、これは他の誰かに役立ちます願っています。

+1

申し訳ありませんが、この問題が発生しました。このような混乱を避けるために、ドキュメントを更新したり、将来のリリースでこのAPIの動作方法を変更したりする予定です。 – AustinZ

関連する問題