/ / Comment ajouter des champs à une classe de modèle Realm - swift, realm

Comment ajouter des champs à une classe de modèle de domaine - swift, realm

Ma classe n'a que 4 champs:

class List: Object {
dynamic var name = ""
dynamic var date = ""
dynamic var notes = ""
dynamic var info = ""
}

Et je veux ajouter 2 autres:

dynamic var website = ""
dynamic var telephone = ""

Si j'ajoute ces champs à la classe, alors Realm me donnera une erreur en raison des nouveaux champs. Comment puis-je mettre à jour cette classe tout en sauvegardant toutes les données utilisateur?

Réponses:

4 pour la réponse № 1

Il y a deux alternatives à considérer:

  1. Si votre application est en cours de développement et n'a pas encore été publiée, vous pouvez supprimer l'application installée et la réinstaller. Le royaume utilisera le schéma de classe de modèle mis à jour lors de la recréation de la base de données.

  2. Si votre application est déjà publiée ou si vous souhaitez conserver les données du fichier de royaume, vous pouvez mettre à niveau le royaume existant avec élégance vers le nouveau schéma. Vous pouvez le faire en effectuer une migration, qui indique au royaume de mettre à jour le schéma surLe fichier sur disque correspond aux classes de modèle de votre application et vous permet d’apporter toute modification nécessaire aux données du fichier de domaine pour tenir compte des modifications apportées à vos classes de modèle.


3 pour la réponse № 2

Cela se produit lorsque Realm crée une structure interne avec votre modèle. Chaque fois que vous devez modifier votre modèle (cela arrive souvent), vous devez migrer votre modèle actuel vers le nouveau.

La façon de faire est:

  1. Apportez les modifications que vous souhaitez apporter à votre modèle de données.
  2. Ajoutez ceci dans votre application (application: didFinishLaunchingWithOptions :) in app delegate

    let config = Realm.Configuration(
    
    schemaVersion: 1,  //Increment this each time your schema changes
    migrationBlock: { migration, oldSchemaVersion in
    
    if (oldSchemaVersion < 1) {
    //If you need to transfer any data
    //(in your case you don"t right now) you will transfer here
    
    }
    })
    
    Realm.Configuration.defaultConfiguration = config
    
    let realm = try! Realm()
    
  3. Maintenant, chaque fois que vous modifiez votre schéma, vous en ajoutez simplement un à la schemaVersion. Bien sûr, les migrations peuvent être plus délicates, mais pour votre modèle, cela fera l'affaire.

Pour plus d'informations, consultez Documentation du royaume rapide