2015-06-03 3 views
28

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

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

Мой текущий подход заключается в следующем:..

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

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

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

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

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

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

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

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

+0

Нет смысла использовать Realm в iOS. Он уступает CoreData всеми возможными способами. – RunLoop

ответ

51

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

+1

Спасибо, именно то, что я искал. Мне пришлось называть его объектнымForPrimaryKey (Book.self, key: prevBook.nextID) – Andy

+1

Что такое эквивалент для Java (Android)? – mm2001

+1

... и что эквивалентно Javascript (React Native) тоже? –

Смежные вопросы