我正在尝试向Realm对象UserDetails添加一个新属性。下面是我的尝试:
class CustomerDetails: Object { dynamic var customer_id = 0 dynamic var customer_name = "" }
字符串现在我需要添加一个新的属性“company_name”到前面已经创建的对象UserDetails。如何添加一个新的到现有的Realm对象?
643ylb081#
有两种方法:1.只需从模拟器中删除您的应用程序并重新运行它。每次更改Realm对象的属性时,现有数据库就会与新数据库不兼容。只要您仍处于开发阶段,您可以简单地从模拟器/设备中删除应用程序并重新启动它。1.在AppDelegate的dispensshLaunchWithOptions方法中编写以下代码:第一个月我建议你遵循第二条。
v09wglhw2#
您只需将属性添加到Realm模型中,但是必须提供迁移,以便将存储的数据更新为新格式。这包括在您的Realm.Configuration中设置一个schemaVersion,它告诉Realm架构已更改,并提供一个migrationBlock,它将现有对象的新属性重新命名(可能只是设置一个空字符串)。在应用程序的下一次启动时,Realm将自动运行迁移,从而将存储的数据更新到新架构。
Realm.Configuration
schemaVersion
migrationBlock
jutyujz03#
这对我来说很有效。每次添加或删除属性时,请升级架构版本(+1)。领域本身会迁移。
func migrateRealm() { Realm.Configuration.defaultConfiguration = Realm.Configuration(schemaVersion: 5) } func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { migrateRealm() return true }
字符串
3条答案
按热度按时间643ylb081#
有两种方法:
1.只需从模拟器中删除您的应用程序并重新运行它。每次更改Realm对象的属性时,现有数据库就会与新数据库不兼容。只要您仍处于开发阶段,您可以简单地从模拟器/设备中删除应用程序并重新启动它。
1.在AppDelegate的dispensshLaunchWithOptions方法中编写以下代码:
第一个月
我建议你遵循第二条。
v09wglhw2#
您只需将属性添加到Realm模型中,但是必须提供迁移,以便将存储的数据更新为新格式。
这包括在您的
Realm.Configuration
中设置一个schemaVersion
,它告诉Realm架构已更改,并提供一个migrationBlock
,它将现有对象的新属性重新命名(可能只是设置一个空字符串)。在应用程序的下一次启动时,Realm将自动运行迁移,从而将存储的数据更新到新架构。jutyujz03#
这对我来说很有效。
每次添加或删除属性时,请升级架构版本(+1)。领域本身会迁移。
字符串