2017-05-12 13 views
0

OSX 10.12.3のMacOS/OSXアプリケーションでRealmSwiftを使用していて、データベースからオブジェクトを取得しようとするとUncaught例外が発生してクラッシュします。レルムオブジェクトを取得しようとするとキャッチされない例外が発生してスウィフトがクラッシュする

はここでGETオブジェクトFUNCにクラッシュするコードスニペットです:

private var database: Realm! 

init(some_var: String) { 
    var configuration = Realm.Configuration() 
    configuration.fileURL = configuration.fileURL!.deletingLastPathComponent().appendingPathComponent("\(some_var).realm") 
    do { 
    debugPrint("Inside init: Current thread \(Thread.current)") 
    self.database = try Realm(configuration: configuration) 
    } catch { 
    debugPrint("realmInit: Can't create realm database.") 
    } 
} 

func getObject<T: Object, K>(with primaryKey: K) -> T? { 
    debugPrint("Inside getObject: Current thread \(Thread.current)") 
    return self.database.object(ofType: T.self, forPrimaryKey: primaryKey) // THIS LINE THROWS EXCEPTION 
} 

私がキャッチされない例外でクラッシュを取得する:まず

"Inside init: Current thread <NSThread: 0x600000075700>{number = 5, name = (null)}" 
"Inside getObject: Current thread <NSThread: 0x600000075700>{number = 5, name = (null)}" 
libc++abi.dylib: terminating with uncaught exception of type NSException 

私はそれがスレッドの問題だと思ったが、私はRealmとgetObjectを同じスレッドで初期化することがわかります。

お願いします。

+1

おそらくconfiguration.fileURL == nil、なぜ奇妙な強制アンラッピングを使用していますか? – user3441734

+0

興味深いことに、私はそれが問題であるかどうか試してみて、見つけたものに返信します。どうして私はなぜtbellをアンラップするのかわからない、私はちょうどどこかのサンプルからそれをつかんでいたに違いないと思う。 – Gix

+0

それは問題ではないことが判明しました。下記の回答を参照してください。 – Gix

答えて

0

返品の種類がの場合は、一般的なとなっていました。

githubのRealmライブラリへの貢献者の1人と会話した後、RealmSwiftバグの可能性があるように聞こえました。

問題がhttps://github.com/realm/realm-cocoa/issues/4951

回避策は、それはdoesnの場合は、新しいオブジェクトを作成しながら、オブジェクトが存在する場合Boolを返す関数を実装して、それがないとき、一般的な非オプションを返すことがある、ここで提起されてきました存在しない。

関連する問題