将不同的继承对象添加到tableView中

时间:2015-09-28 10:58:47

标签: ios swift uitableview inheritance realm

我在Realm中创建了一个SuperClass和两个子类。然后,我在CatDog类中创建了多个对象。我的问题是什么是检索这些对象并将它们添加到tableView的最佳解决方案。应该放在tableView中的所有信息都来自SuperClass?我是否需要单独检索DogCat并合并这些数组?如果是,那我该怎么办呢?或者在这种情况下最好的解决方案是什么?

class Pet: Object {
    var myDate = NSDate()
    var title = ""
    var subTitle = ""
}

class Dog: Pet {
}

class Cat: Pet {
}

1 个答案:

答案 0 :(得分:1)

境界doesn't support polymorphic queries yet。因此,您无法查询realm.objects(Pet)。但是Results的每个对象都可以添加到一个数组中,其Element类型是超类。

因此,您需要单独查询两种对象类型。

let cat = realm.objects(Cat)
let dog = realm.objects(Dog)

根据您的用例,您可以将它们全部拉入内存并将它们都附加到[Object]数组中,然后简单地对该数组进行排序。 这看起来如下:

var pets = [Object]()
pets += dogs.map { $0 as Pet }
pets += cats.map { $0 as Pet }