我正在开发一个 iOS 应用程序,使用 Realm.io 作为持久存储。
我刚刚通过添加主键更新了我的自定义 RLMObject 子类之一。
当我运行该应用程序时,出现错误,告诉我需要添加迁移步骤:
'Migration is required for object type 'MY_REALM_OBJECT' due to the following errors:
- Property 'property_name' has been made a primary key.'
我有其他迁移代码,但在 Realm 文档中找不到有关如何向 RLMObject 添加主键的任何内容。
有人知道怎么做吗?
我有其他迁移代码,但在 Realm 文档中找不到有关如何向 RLMObject 添加主键的任何内容。
您已经将其设为主键! Realm 文档在《定制模型》 https://realm.io/docs/cocoa#customizing-models部分。
由于向模型添加/修改主键需要更新数据库文件(数据库中该表/列的每个值都将被索引),因此您需要更新架构版本。
主键必须是唯一的。如果所有值都已经是唯一的,Realm 将自动为您应用迁移,因此您无需对您的property_name
迁移块中的属性。
If the property_name
值并非全部都是唯一的,您需要使它们在迁移块中唯一。更改 Realm 迁移块中的数据的方法是迭代现有对象并设置值newObject
使用键控下标:
[RLMRealm setSchemaVersion:1
forRealmAtPath:realmPath
withMigrationBlock:^(RLMMigration *migration, NSUInteger oldSchemaVersion) {
if (oldSchemaVersion < 1) {
__block NSInteger incrementingPrimaryKeyValue = 0;
// The enumerateObjects:block: method iterates
// over every 'MY_REALM_OBJECT' object stored in the Realm file
[migration enumerateObjects:@"MY_REALM_OBJECT"
block:^(RLMObject *oldObject, RLMObject *newObject) {
// set the primary key to a unique value
newObject[@"property_name"] = @(incrementingPrimaryKeyValue++);
}];
}
}];
要了解有关迁移的更多信息,请阅读“迁徙” https://realm.io/docs/cocoa#migrationsRealm 文档的部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)