web-dev-qa-db-ja.com

Realmデータベースから単一のオブジェクトを取得する正しい方法

私は絶対にRealm(0.92)とSwiftを組み合わせて愛していますが、データベースからのオブジェクトの読み取りについて質問があります。私の目標は、既知の一意のID(たまたま主キーです。

すべてのドキュメントは、フィルタリングされた複数のオブジェクトのクエリを中心にしています。この場合、オブジェクトIDを知っています。一意であることがわかっているので、直接取得したいと思います。

私の現在のアプローチは次のとおりです。

Realm().objects(Book).filter("id == %@", prevBook.nextID).first

これは重苦しいようです。以前のバージョンのドキュメントは、より直接的な方法があることを示唆していますが、ドキュメントで見つけることができないようです。

私の現在のアプローチの問題は、次の関数で例外が発生してクラッシュすることです。

public func filter(predicateFormat: String, _ args: CVarArgType...) -> Results<T>

例外は次のように不思議に報告されています:

EXC_BAD_ACCESS(コード= 1、アドレス= 0xedf)

どんな提案も大歓迎です。

1行の質問を予測:prevBook.nextIDを既知の適切なIDに置き換えても問題が解決しないことを確認しました

41
Andy

object(ofType:forPrimaryKey:) は、Realm().object(ofType: Book.self, forPrimaryKey: prevBook.nextId)を探しています。主キー以外の何かでオブジェクトを検索する必要がある場合、filter().firstより簡単な方法はありません。

72
Thomas Goyne