gpt4 book ai didi

ios - 将主键添加到 RLMObject 需要迁移,有什么想法吗?

转载 作者:可可西里 更新时间:2023-11-01 05:20:35 27 4
gpt4 key购买 nike

我正在开发一个以 Realm.io 作为持久存储的 iOS 应用程序。我刚刚通过添加主键更新了我的自定义 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 的内容。

有人知道怎么做吗?

最佳答案

I have other migration code but can't find anything in the Realm docs on how to add a primary key to an RLMObject.

您已经将其设为主键! Realm 文档在 "Customizing Models" 中对此进行了介绍部分。

由于向模型添加/修改主键需要更新数据库文件(数据库中该表/列的每个值都将被索引),因此您需要更新架构版本。

主键必须是唯一的。如果所有值都已经是唯一的,Realm 将自动为您应用迁移,因此您无需对迁移 block 中的 property_name 属性进行任何更改。

如果 property_name 值并非全部都是唯一的,您需要在迁移 block 中使它们唯一。在 Realm 迁移 block 中更改数据的方式是迭代现有对象并使用键控下标在 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++);
}];
}
}];

要了解有关迁移的更多信息,请阅读 "Migrations" Realm 文档的一部分。

关于ios - 将主键添加到 RLMObject 需要迁移,有什么想法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29261980/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com