Realm pour Swift : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce que Realm et pourquoi en a-t-on besoin ?

\n\n

Realm est une base de données mobile créée comme alternative à Core Data et SQLite. Contrairement aux bases de données relationnelles traditionnelles, Realm fonctionne comme un stockage orienté objet : vous travaillez avec des objets natifs Swift, et non avec des requêtes SQL ou NSManagedObject. Realm stocke les données dans son propre format, ce qui offre des performances proches de celles de la mémoire vive.

\n\n

Principaux avantages de Realm :

\n
    \n
  • Vitesse : Realm est 10 à 100 fois plus rapide que SQLite sur les appareils mobiles.
  • \n
  • Simplicité : Vous travaillez avec des objets Swift classiques, en les héritant de Realm.Object.
  • \n
  • Mise à jour automatique : Les résultats des requêtes (Results) se mettent automatiquement à jour lors des modifications de données.
  • \n
  • Objets live : Les objets Realm se synchronisent automatiquement avec la base de données.
  • \n
  • Multiplateforme : Realm fonctionne sur iOS, macOS, tvOS et watchOS.
  • \n
\n\n

Realm est idéal pour les applications nécessitant un accès rapide aux données sur l'appareil : listes de tâches, messageries, mise en cache de données réseau, applications de notes et bien d'autres.

\n\n

Installation de Realm dans Swift

\n\n

Realm pour Swift s'installe via Swift Package Manager (SPM), CocoaPods ou Carthage. Examinons les deux méthodes les plus courantes.

\n\n

Installation via Swift Package Manager (recommandée)

\n
    \n
  1. Dans Xcode, ouvrez le projet : File → Add Packages...
  2. \n
  3. Collez l'URL : https://github.com/realm/realm-swift.git
  4. \n
  5. Choisissez la version (la dernière version stable est recommandée) et cliquez sur Add Package.
  6. \n
  7. Dans la fenêtre qui apparaît, sélectionnez le package Realm et RealmSwift pour votre cible de build.
  8. \n
\n\n

Installation via CocoaPods

\n

Ajoutez dans le Podfile :

\n
target 'YourApp' do\n  use_frameworks!\n  pod 'RealmSwift'\nend
\n

Exécutez ensuite dans le terminal :

\n
pod install
\n\n

Import dans le code

\n
import RealmSwift
\n\n

Démarrage rapide : premier modèle et écriture de données

\n\n

Créons un modèle de tâche simple et sauvegardons-le dans la base de données.

\n\n
import RealmSwift\n\n// 1. Définir le modèle\nclass Task: Object {\n    @Persisted var id: String = UUID().uuidString\n    @Persisted var title: String = ""\n    @Persisted var isCompleted: Bool = false\n    @Persisted var createdAt: Date = Date()\n    \n    // Clé primaire (optionnelle mais recommandée)\n    override static func primaryKey() -> String? {\n        return "id"\n    }\n}\n\n// 2. Sauvegarder l'objet\nlet task = Task()\ntask.title = "Acheter des courses"\ntask.isCompleted = false\n\nlet realm = try! Realm()\ntry! realm.write {\n    realm.add(task)\n}\n\n// 3. Lire toutes les tâches\nlet tasks = realm.objects(Task.self)\nfor task in tasks {\n    print("\\(task.title) - \\(task.isCompleted ? "Terminée" : "Non terminée")")\n}
\n\n

Méthodes et fonctions principales de Realm

\n\n

Voici les méthodes clés pour travailler avec Realm. Chaque méthode est accompagnée d'une description, des paramètres et d'un exemple fonctionnel.

\n\n

1. Realm() — Initialisation de la base de données

\n

Fonction : Crée ou ouvre une base de données Realm existante. Par défaut, le fichier de base de données se trouve dans le répertoire Documents de l'application.

\n

Paramètres : configuration: Realm.Configuration? — configuration optionnelle (URL du fichier, schéma, version de migration).

\n
// Initialisation standard\nlet realm = try! Realm()\n\n// Initialisation avec une URL personnalisée\nlet config = Realm.Configuration(fileURL: FileManager.default\n    .urls(for: .documentDirectory, in: .userDomainMask)\n    .first?.appendingPathComponent("myrealm.realm"))\nlet customRealm = try! Realm(configuration: config)
\n\n

2. realm.wr

Recommendations