我在iOS应用中使用Realm作为我的存储层。 App有一个表视图,其中每个单元格可以是两种类型之一。这两种类型有一些共同的领域,但有几个领域不同。
客户端将使用搜索词执行REST API,服务器将返回属于这两种类型的objets的优先级列表。设计者不希望对象显示为两个单独的组,而是根据服务器确定的优先级混合在一起。
我想将结果存储在Realm DB中。由于Realm RLMArray
不允许我存储2种类型的对象,为了在Realm中对此进行建模,看来我需要有三个RLMArray
个对象
1. RLMArray
类型为1的对象
2. RLMArray
类型为2的对象
3. RLMArray
具有两个字段的第三类对象:对象类型和ObjectID(这是存储混合版本的对象)。
是否有不同的方法可以减少重复?
答案 0 :(得分:1)
第三种类型可以是与另外两种类型有直接关系的包装器对象:
@interface Obj1 : RLMObject
@end
@interface Obj2 : RLMObject
@end
@interface Wrapper : RLMObject
@property Obj1 *o1;
@property Obj2 *o2;
@end
接收对象时,您将为每个对象创建一个包装实例,并仅设置匹配链接。然后,您的TableView可以检查哪个链接有效并显示链接对象的上下文。
根据您的使用情况,您对两种主要对象类型甚至不需要RLMArray
,因为排序由包装器对象列表维护。