Realm作为Tableview的数据源-如何在数据源中存储不同的对象



我在iOS应用程序中使用Realm作为我的存储层。应用程序有一个表视图,其中每个单元格可以是两种类型之一。这两种类型有一些相同的字段,但有几个字段不同。

客户端将执行带有搜索词的REST API,服务器将返回属于这两种类型的对象的优先级列表。设计人员不希望对象显示为两个单独的组,而是根据服务器确定的优先级混合在一起。

我想将结果存储在Realm DB中。由于Realm RLMArray不允许我存储2种类型的对象,要在Realm中建模,似乎我需要有三个RLMArray对象1. 类型1对象的RLMArray2. 2类对象的RLMArray3.有两个字段的第三种类型的对象的RLMArray: Object type和ObjectID(这是存储混合版本的对象)。

有没有其他方法可以减少重复?

第三种类型可以是与其他两种类型有直接关系的包装器对象:

@interface Obj1 : RLMObject
@end
@interface Obj2 : RLMObject
@end
@interface Wrapper : RLMObject
@property Obj1 *o1;
@property Obj2 *o2;
@end

当接收到对象时,您将为每个对象创建包装器的实例,并且只设置匹配的链接。然后TableView可以检查哪个链接是有效的并显示被链接对象的上下文。

根据您的用例,您甚至不需要RLMArray s用于两种主要对象类型,因为排序是由包装器对象列表维护的。

最新更新