web-dev-qa-db-fra.com

Façon correcte de récupérer un seul objet de la base de données Realm

J'adore absolument Realm (0.92) en combinaison avec Swift mais j'ai une question sur la lecture d'un objet de la base de données. Mon objectif est de récupérer un seul objet avec un ID unique connu (qui se trouve être la clé primaire.

Toute la documentation semble être orientée autour de requêtes pour plusieurs objets qui sont ensuite filtrés. Dans ce cas, je connais l'ID de l'objet et, comme il est connu pour être unique, je voudrais le récupérer directement.

Mon approche actuelle est la suivante:

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

Cela semble lourd. La documentation des versions précédentes suggère qu'il existe un moyen plus direct mais je n'arrive pas à le trouver dans la documentation.

Le problème avec mon approche actuelle est qu'elle plante avec une exception sur la fonction suivante:

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

L'exception est mystérieusement signalée comme suit:

EXC_BAD_ACCESS (code = 1, adresse = 0xedf)

Toute suggestion est la bienvenue.

Anticiper une ligne de questionnement: j'ai confirmé que le remplacement de prevBook.nextID par une bonne identification connue ne résout pas le problème

41
Andy

object (ofType: forPrimaryKey:) est ce que vous recherchez: Realm().object(ofType: Book.self, forPrimaryKey: prevBook.nextId). Il n'y a pas de moyen plus simple que filter().first si vous devez rechercher l'objet par autre chose que la clé primaire.

72
Thomas Goyne