- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在开发一个以 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/
我有一个 Product带有标题的模型: @interface Product : RLMObject { } @property (nonatomic, strong) NSString *tit
我有一个 RLMObject,我希望从底层 tightdb 刷新它。我不一定需要刷新该 Realm 上的所有对象(即 [[myObject realm] refresh]),因为这感觉有点矫枉过正:我
在我的应用程序中,我有一个继承自 RLMObject 的 CustomUser。 我想知道如何只为这个 CustomUser 对象存储 1 个对象? func saveUser() { le
开始使用 Realm 作为我的应用程序的存储层。这就是我试图解决的场景 场景:我从服务器获取一大堆数据。我将每条数据转换为 RLMObject。我想最后“保存”到持久存储。在这之间,我希望这些 RLM
我对 Realm 还很陌生,正在考虑在特定项目中放弃 CoreData 堆栈,转而使用它,因为我大多只需要本地存储 - Realm 至少在纸面上感觉是完美的匹配。我面临的问题是,我无法找到一种方法来修
使用 RealmSwift 执行此操作的正确方法是什么,它曾经是 RLMobject var stream:Results stream = Realm().objects(streams) 第一个作
我正在尝试以编程方式获取 RLMObject 的属性列表,如下所示: MyRLMObject *myRLMObject = [[MyRLMObject alloc] init]; unsigned i
例如,有一只狗和一只猫对象,它们都有相同的属性“所有者”,我如何删除数据库中具有相同所有者的所有狗和猫?我必须单独删除它们吗?这让我很困扰,因为我需要根据对象都拥有的属性一次删除如此多的对象。 最佳答
我有将 RLMObject 子类保存到 Realm 数据库的代码。此代码有效,我已使用 Realm 浏览器验证它是否按预期保存。 然后我想在 Realm 数据库中查询我保存的这个对象,我想将它转换为我
我目前正在开发一款使用 Realm 作为后端数据存储的 iOS 应用。我有一个类,它是用户配置文件的 RLMObject。它存储他们的姓名、个人资料图片、统计信息等。 应该总是只有这些对象之一,但我知
本质上,我有一个 UITableView,其中的单元格有一个 UITextField,对应于 RLMObject 中的属性(比方说 10 多个属性)。我只允许用户在编辑模式下编辑字段(通过禁用用户交互
我在测试 Realm 时遇到问题。如果我将我的目标文件包含到测试目标中,我会在执行测试时收到此错误: file:///path/project-iOS/project-iOS/DataManag
我知道 RLMObjects 不能存储 NSDecimalNumber。为了解决这个问题,我尝试了以下方法,但失败了: private dynamic var _amount: Stri
我写过这样的代码来监听 Post 对象的变化。 notification = Post.allObjects(in: RLMRealm.encryptedRealm()! as! RLMRea
我有一个包含 10000 个 RLMObject 的 RLMArray,可以根据按钮触摸事件按它们的属性对其进行排序。 我想通过 GCD 将排序过程踢回后台线程,并保持 UI 流畅。 Realm 不是
我在我的新 iOS 项目中使用 Realm。我正在像这样插入新的 RLMObject: let realm = RLMRealm.defaultRealm() var route = Route()
我在我的项目中同时使用了 ObjectMapper ( https://github.com/Hearst-DD/ObjectMapper ) 和 Realm。我的对象都是RLMObjects; 例如
我想在 dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) 中更新 RLMObject 并在 dispatch_get_main
我正在开发一个以 Realm.io 作为持久存储的 iOS 应用程序。我刚刚通过添加主键更新了我的自定义 RLMObject 子类之一。 当我运行该应用程序时,我收到一条错误消息,提示我需要添加迁移步
Realm 支持 UIColors 吗? 如何向 RLMObject 的子类添加 UIColor 属性?推荐的方法是什么? 感谢您的帮助! 最佳答案 Realm 不直接支持读写 UIColor 对象。
我是一名优秀的程序员,十分优秀!