Si l'attribut id
dans un objet est de type Integer
, comment filtrer la requête pour renvoyer tous les objets dont id
contient une partie d'une requête. c'est-à-dire quel est l'opérateur de filtre Realm contient
équivalent pour les entiers?
par exemple object1
a id: 1234
. Si j'interroge 123
, il doit renvoyer object1
. Le seul filtre disponible pour les nombres entiers qui se rapproche est equalTo
mais pour que cela fonctionne, je devrais passer 1234
à la requête.
3 Réponses :
Vous devez probablement ajouter un champ d'assistance qui représente votre id
en tant que String
et une requête contains ()
basée sur ce champ. p >
Vous devez changer votre champ Integer
en String
, puis vous pouvez filtrer à partir de Realm
de cette manière
realm.where(YourRealmModel.class).contains("id","123").findAll()
Il n'y a donc aucun moyen de conserver le champ id
comme un Integer
et de filtrer une partie de l ' id
?
pour autant que je sache, pas de tel moyen.
Il semble que vous essayez d'accéder à un objet via une clé primaire d'id. Vous pouvez accéder directement à cet objet avec le code suivant sans requête. En supposant que nous ayons une DogClass:
class DogClass: Object { @objc dynamic var id = NSUUID().uuidString @objc dynamic var dog_name = "" override static func primaryKey() -> String? { return "id" } } let realm = try! Realm() let primaryKey = 123 guard let thisDog = realm.object(ofType: DogClass.self, forPrimaryKey: primaryKey) else { return } print(thisDog.dog_name)
Pourquoi une requête pour 123 renverrait-elle un objet avec un ID de 1234? qu'en est-il d'un objet avec 12345 ou 123456? Il semble que vous cherchiez un objet avec une clé primaire connue. Si c'est le cas, lisez ma réponse. Sinon, clarifiez la question et je mettrai à jour ma réponse. De plus, et integer ne contient rien d'autre que l'entier. Si vous souhaitez rechercher des sous-chaînes, c'est un type d'objet totalement différent, généralement une chaîne.