À propos du projet

# À propos de Realm Database Realm est une base de données mobile qui s'exécute directement dans les téléphones, tablettes ou appareils portables. Ce dépôt contient le code source des versions iOS, macOS, tvOS et watchOS de Realm Swift et Realm Objective-C. ## Pourquoi utiliser Realm * **Intuitif pour les développeurs :** Le modèle de données orienté objet de Realm est simple à apprendre, ne nécessite pas d'ORM et vous permet d'écrire moins de code. * **Conçu pour le mobile :** Realm est complet, léger et utilise efficacement la mémoire, l'espace disque et la batterie. * **Conçu pour une utilisation hors ligne :** La base de données locale de Realm persiste les données sur le disque, de sorte que les applications fonctionnent aussi bien hors ligne qu'en ligne. ## Orienté objet : rationalisez votre code Realm a été conçu pour les développeurs mobiles, avec la simplicité à l'esprit. Le modèle de données idiomatique et orienté objet peut vous faire économiser des milliers de lignes de code. ```swift // Définissez vos modèles comme des classes Swift normales class Dog: Object { @Persisted var name: String @Persisted var age: Int } class Person: Object { @Persisted(primaryKey: true) var _id: String @Persisted var name: String @Persisted var age: Int // Créez des relations en pointant un champ Object vers une autre classe @Persisted var dogs: List<Dog> } // Utilisez-les comme des objets Swift normaux let dog = Dog() dog.name = "Rex" dog.age = 1 print("nom du chien : \(dog.name)") // Obtenez le Realm par défaut let realm = try! Realm() // Persistez vos données facilement avec une transaction d'écriture try! realm.write { realm.add(dog) } ``` ## Objets en direct : créez des applications réactives Les objets en direct de Realm signifient que les données mises à jour n'importe où sont automatiquement mises à jour partout. ```swift // Ouvrez le realm par défaut. let realm = try! Realm() var token: NotificationToken? let dog = Dog() dog.name = "Max" // Créez un chien dans le realm. try! realm.write { realm.add(dog) } // Configurez l'écouteur et observez les notifications d'objets. token = dog.observe { change in switch change { case .change(let properties): for property in properties { print("La propriété '\(property.name)' a changé en '\(property.newValue!)'"); } case .error(let error): print("Une erreur s'est produite : (error)") case .deleted: print("L'objet a été supprimé.") } } // Mettez à jour le nom du chien pour voir l'effet. try! realm.write { dog.name = "Wolfie" } ``` ### SwiftUI Realm s'intègre directement avec SwiftUI, mettant à jour vos vues afin que vous n'ayez pas à le faire. ```swift struct ContactsView: View { @ObservedResults(Person.self) var persons var body: some View { List { ForEach(persons) { person in Text(person.name) } .onMove(perform: $persons.move) .onDelete(perform: $persons.remove) }.navigationBarItems(trailing: Button("Ajouter") { $persons.append(Person()) } ) } } ``` ## Entièrement chiffré Les données peuvent être chiffrées en transit et au repos, gardant même les données les plus sensibles en sécurité. ```swift // Générez une clé de chiffrement aléatoire var key = Data(count: 64) _ = key.withUnsafeMutableBytes { (pointer: UnsafeMutableRawBufferPointer) in guard let baseAddress = pointer.baseAddress else { fatalError("Échec de l'obtention de l'adresse de base") } SecRandomCopyBytes(kSecRandomDefault, 64, baseAddress) } // Ajoutez la clé de chiffrement à la configuration et ouvrez le realm let config = Realm.Configuration(encryptionKey: key) let realm = try Realm(configuration: config) // Utilisez le Realm comme d'habitude let dogs = realm.objects(Dog.self).filter("name contient 'Fido'") ``` ## Pour commencer Nous prenons en charge l'installation de Realm via Swift Package Manager, CocoaPods, Carthage ou en important un XCFramework dynamique. Pour plus d'informations, consultez notre [Démarrage rapide](docs/guides/quick-start.md). ## Documentation La documentation se trouve dans le répertoire [docs/](docs/README.md). La référence de l'API peut être générée à partir de la source en utilisant [jazzy](https://github.com/realm/jazzy/) en exécutant `sh build.sh docs` depuis la racine de ce dépôt. ## Obtenir de l'aide - **Besoin d'aide avec votre code ?** : Recherchez des questions précédentes avec le [tag `realm`](https://stackoverflow.com/questions/tagged/realm?sort=newest) sur Stack Overflow ou [posez une nouvelle question](https://stackoverflow.com/questions/ask?tags=realm). Pour une discussion générale qui pourrait être considérée comme trop large pour Stack Overflow, utilisez le [Forum communautaire](https://developer.mongodb.com/community/forums/tags/c/realm-sdks/58/swift/). - **Avez-vous un bug à signaler ?** [Ouvrez un problème GitHub](https://github.com/realm/realm-swift/issues/new). Si possible, incluez la version de Realm, un journal complet, le fichier Realm et un projet qui montre le problème. - **Avez-vous une demande de fonctionnalité ?** [Ouvrez un problème GitHub](https://github.com/realm/realm-swift/issues/new). Dites-nous ce que la fonctionnalité devrait faire et pourquoi vous la voulez. ## Construire Realm Au cas où vous ne voudriez pas utiliser la version précompilée, vous pouvez construire Realm vous-même à partir de la source. Prérequis : * La construction de Realm nécessite Xcode 15.3 ou plus récent. * La construction de la documentation de Realm nécessite [jazzy](https://github.com/realm/jazzy) Une fois que vous avez tous les prérequis nécessaires, construire Realm ne prend qu'une seule commande : `sh build.sh build`. Vous aurez besoin d'une connexion Internet la première fois que vous construisez Realm pour télécharger le binaire principal. Cela produira Realm.xcframework et RealmSwift.xcframework dans `build/Release/`. Exécutez `sh build.sh help` pour voir toutes les actions que vous pouvez effectuer (construire ios/osx, générer la documentation, tester, etc.). ## Contribuer Voir [CONTRIBUTING.md](CONTRIBUTING.md) pour plus de détails ! ## Code de conduite Ce projet adhère au [Code de conduite MongoDB](https://www.mongodb.com/community-code-of-conduct). En participant, vous êtes censé respecter ce code. Veuillez signaler tout comportement inacceptable à [community-conduct@mongodb.com](mailto:community-conduct@mongodb.com). ## Licence Realm Objective-C et Realm Swift sont publiés sous la licence Apache 2.0. Realm Core est également publié sous la licence Apache 2.0 et est disponible [ici](https://github.com/realm/realm-core). ## Retour d'information **_Si vous utilisez Realm et en êtes satisfait, veuillez envisager d'envoyer un tweet mentionnant [@realm](https://twitter.com/realm) pour partager vos réflexions !_** **_Et si vous ne l'aimez pas, veuillez nous faire savoir ce que vous aimeriez améliorer, afin que nous puissions le corriger !_**