Travailler avec les Realm Results<T> ou des List<T> ou encore des Array?

Bonjour tout le monde :slight_smile:

Je travaille avec une base de donnée Realm, donc les requêtes situées dans les managers de mes objets Realm retourne des résultats du type Results< T >

Vaut-il mieux travailler avec des Results< T > dans toute mon application (mais alors ça implique que je dois importer RealmSwift un peu partout dans mon application), ou plutôt travailler avec des List< T >, et donc convertir les Results< T > avant que les managers d’objets retourne le résultat? Ou peut-être encore travailler avec des tableaux tout simplement (et donc à nouveau, convertir les objets Results< T >)?

J’ai cru comprendre que les List< T > (et donc les Results< T >), sont plus flexible et plus pratique à l’utilisation que les Array? Qu’en est-il?

Merci pour votre avis,
Bonne journée,

Alexandre

Il y a plusieurs avantages à travailler directement avec les tableaux de realm :

  • Ils sont capables de se mettre à jour en temps réel (exemple : ajout d’un élément dans la base, le rajoute dans le Result sans avoir à refaire la requête)
  • Pour des raisons de performances, Realm ne crée pas tous les objets dans ses listes et utilise le lazy loading (les objets sont chargés au dernier moment, dès qu’on cherche à consulter leurs données).
  • Ils restent utilisables quasiment de la même manière que des tableaux standards.

Si tu ne veux pas importer RealmSwift partout, tu peux cacher ton tableau dans une classe perso comme je l’ai fait dans SafetyFirst (https://github.com/maxbritto/cours-ios11-swift4/blob/master/Maitriser/Objectif%20Telechargement/Safety%20First/Safety%20First/Model/CredentialsManager.swift).
Par contre si tu veux les notifications en temps réel de realm (https://realm.io/docs/swift/latest/#collection-notifications) il te faudra rendre ton Result<T> accessible directement dans tes UIViewController.

2 « J'aime »

Merci pour la réponse! :slight_smile:

Au vu des avantages des tableaux de Realm, je pense que je ne vais pas m’en priver!

Merci!

1 « J'aime »

Bonjour,
concernant les tableaux dans Realm, j’essaie de créer un tableau issu d’une donnée d’une de mes classes mais cela ne semble pas fonctionner:
j’ai une class Coureur avec un “nom”, “prénom”… et “un numéro”.
J’essaie de faire un array des numéros.

mon code dans un autre viewController:

let _coureur = coureurs()
// puis dans une fonction dans laquelle je veux utiliser le tableau des numéros de mes coureurs:
let coureurNumber = [_coureur.number] mais ça ne marche pas.
Comment puis-je faire?

Bonjour @jeancharles.bidault

Le mieux serait de créer un topic propre à ton sujet pour plus de lisibilité, et pour que l’on puisse y répondre plus facilement.

En attendant, je peux essayer de t’aider :slight_smile:
D’abord, que retourne coureurs() ? Un tableau de tous les coureurs ?
Si oui, et que tu souhaites récupérer le numéro d’un coureur dans le tableau de tes coureurs (_coureur), tu devrais plutôt faire:

let coureurNumber = _coureur[index].number // où index est le numéro du coureur que tu souhaites atteindre

Hésite pas à nous fournir plus de détails sur ta classe et ce que tu souhaites faire,

Bonne journée,

Alexandre