领域对象上的索引是属性的复合索引或每个属性的不同索引

时间:2019-01-02 05:56:50

标签: swift realm

我使用'RealmSwift'在我的应用程序中创建一个Realm数据库。考虑一个我用来作为“ ClassA ”的“ 对象”子类。 “ ClassA ”及其属性可以简单地描述如下(为简洁起见,请省略实际代码):

ClassA: Object
-prop1
-prop2
-prop3
-prop4
-prop5
-prop6

我想必须在“ ClassA”上两个索引。具体来说,我希望每个索引都是一个复合索引。让我们将两个索引称为“ Index1 ”和“ Index2 ”。所谓复合,是指索引可以具有多种属性。因此,让我们如下定义两个索引:

Index1: prop1, prop2, prop6
Index2: prop3, prop4, prop5

如果我具有这些特定属性的值,则需要这些复合索引以便更快地进行获取。这对我的应用程序至关重要。

使用RealmSwift在Real Objects上提供索引是通过返回一个包含我们要索引的属性名称的String数组来覆盖Object.indexedProperties()来完成的。

我想知道这是为每个属性创建一个单独的索引还是为所有属性创建一个复合索引。

1 个答案:

答案 0 :(得分:0)

据我了解,文档 Object.indexedProperties()将为您返回的每个属性创建一个索引,但没有复合索引。

要解决此问题,您可以做的是在对象上创建新属性,这些属性将要用于复合索引的属性组合在一起。

示例: 通过将 prop1 prop2 prop6 连接到一个字符串,创建一个新属性 indexProp126 (仅作为示例,此处可能是更有效的方式(例如哈希等),具体取决于这些属性的类型和内容到底是什么),然后将其用作索引。