Подтвердить что ты не робот

Правильный способ получения одного объекта из базы данных Realm

Я абсолютно любящий Realm (0.92) в сочетании с Swift, но имею вопрос о чтении объекта из базы данных. Моя цель - получить один объект с известным уникальным идентификатором (который также является основным ключом.

Вся документация, по-видимому, ориентирована вокруг запросов для нескольких объектов, которые затем фильтруются. В этом случае я знаю идентификатор объекта и, поскольку он известен как уникальный, хотел бы получить его напрямую.

Мой текущий подход выглядит следующим образом:

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

Это кажется тяжело. Документация из предыдущих версий предполагает, что существует более прямой способ, но я не могу найти его в документации.

Проблема с моим текущим подходом заключается в том, что он сбой с исключением из следующей функции:

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

Исключение загадочно сообщается как:

EXC_BAD_ACCESS (код = 1, адрес = 0xedf)

Любые предложения приветствуются.

Предваряя одну строку опроса: я подтвердил, что замена prevBook.nextID с известным хорошим идентификатором не решает проблему

4b9b3361

Ответ 1

объект (ofType: forPrimaryKey:) - это то, что вы ищете: Realm().object(ofType: Book.self, forPrimaryKey: prevBook.nextId). Нет более простого способа, чем filter().first, если вам нужно искать объект чем-то другим, кроме первичного ключа.