À 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 !_**
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.