2017-10-07 8 views
1

J'essaie d'ajouter une nouvelle propriété à l'objet Realm UserDetails. Voici mon essai:Comment ajouter une nouvelle propriété à un objet de domaine?

class CustomerDetails: Object { 
    dynamic var customer_id = 0 
    dynamic var customer_name = "" 
} 

Maintenant je dois ajouter une nouvelle propriété « company_name » aux UserDetails d'objet qui est déjà créé précédemment. Comment ajouter un nouveau à l'objet Realm existant?

Répondre

1

Deux façons de le faire:

  1. Il suffit de supprimer votre application de simulateur et l'exécuter à nouveau. Chaque fois que vous modifiez des propriétés sur vos objets Realm, votre base de données existante devient incompatible avec la nouvelle. Tant que vous êtes encore en phase de développement, vous pouvez simplement supprimer l'application du simulateur/appareil et la redémarrer.

  2. écrire ce code dans la méthode disFinishLaunchWithOptions de AppDelegate: let config = Realm.Configuration( schemaVersion: 1, migrationBlock: { migration, oldSchemaVersion in if (oldSchemaVersion < 1) { // Nothing to do! // Realm will automatically detect new properties and removed properties // And will update the schema on disk automatically } }) Realm.Configuration.defaultConfiguration = config let realm = try! Realm()

Je vous suggère de suivre la seconde.

3

Vous venez d'ajouter la propriété au modèle Realm, mais vous devrez fournir un migration afin de mettre à jour les données stockées au nouveau format.

Cela inclut la fixation d'un schemaVersion dans votre Realm.Configuration qui dit Realm que le schéma a été changé, et en fournissant un migrationBlock initialisant la nouvelle propriété pour les objets existants (probablement en définissant une chaîne vide). Au prochain démarrage de l'application, Realm exécutera automatiquement la migration et mettra ainsi à jour les données stockées dans le nouveau schéma.