2017-10-07 64 views
1

我正在嘗試向Realm對象UserDetails添加一個新屬性。這裏是我的嘗試:如何將新屬性添加到R​​ealm對象?

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

現在我需要添加一個新的屬性「company_name」到對象UserDetails已被創建更早。如何將新的添加到現有的Realm對象?

回答

1

兩種方式做到這一點:

  1. 剛剛從模擬器刪除您的應用程序並重新運行。每當您更改Realm對象的屬性時,您現有的數據庫就會與新的數據庫不兼容。 只要你還處於開發階段,你可以簡單地從模擬器/設備上刪除應用程序並重新啓動它。

  2. 寫這個代碼在AppDelegate中的disFinishLaunchWithOptions方法: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()

我建議你遵循第二個。

3

您只需將屬性添加到R​​ealm模型中,但必須提供migration以便將存儲的數據更新爲新格式。

這包括設置在Realm.Configuration告訴境界,該架構改變一個schemaVersion,並提供migrationBlock其初始化現有對象的新屬性(可能只是通過設置一個空字符串)。在應用程序的下一次開始時,Realm將自動運行遷移,從而將存儲的數據更新爲新的模式。