Qu'est-ce que Realm et pourquoi en a-t-on besoin ?
\n\nRealm 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\nPrincipaux 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
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\nInstallation de Realm dans Swift
\n\nRealm pour Swift s'installe via Swift Package Manager (SPM), CocoaPods ou Carthage. Examinons les deux méthodes les plus courantes.
\n\nInstallation via Swift Package Manager (recommandée)
\n- \n
- Dans Xcode, ouvrez le projet :
File → Add Packages...\n - Collez l'URL :
https://github.com/realm/realm-swift.git\n - Choisissez la version (la dernière version stable est recommandée) et cliquez sur
Add Package. \n - Dans la fenêtre qui apparaît, sélectionnez le package
RealmetRealmSwiftpour votre cible de build. \n
Installation via CocoaPods
\nAjoutez dans le Podfile :
\ntarget 'YourApp' do\n use_frameworks!\n pod 'RealmSwift'\nend\nExécutez ensuite dans le terminal :
\npod install\n\nImport dans le code
\nimport RealmSwift\n\nDémarrage rapide : premier modèle et écriture de données
\n\nCréons un modèle de tâche simple et sauvegardons-le dans la base de données.
\n\nimport 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\nMéthodes et fonctions principales de Realm
\n\nVoici 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\n1. Realm() — Initialisation de la base de données
\nFonction : 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.
\nParamètres : configuration: Realm.Configuration? — configuration optionnelle (URL du fichier, schéma, version de migration).
// 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