1
votes

Filtrer sur un champ Integer dans Realm

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.


1 commentaires

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.


3 Réponses :


1
votes

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.


0 commentaires

1
votes

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()


2 commentaires

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.



0
votes

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)


0 commentaires