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

时间:2016-08-14 22:01:43

标签: objective-c uitableview realm

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

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

我想将结果存储在Realm DB中。由于Realm RLMArray不允许我存储2种类型的对象,为了在Realm中对此进行建模,看来我需要有三个RLMArray个对象 1. RLMArray类型为1的对象 2. RLMArray类型为2的对象 3. RLMArray具有两个字段的第三类对象:对象类型和ObjectID(这是存储混合版本的对象)。

是否有不同的方法可以减少重复?

1 个答案:

答案 0 :(得分:1)

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

@interface Obj1 : RLMObject
@end

@interface Obj2 : RLMObject
@end

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

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

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