将继承领域对象合并在一起

时间:2015-09-27 16:01:38

标签: ios swift inheritance realm

如下所示,我有2个Realm子类DogCag,它们包含不同数量的对象。我想检索这些对象并将它们一起添加到一个数组中,这样我就可以运行sortPetByDate。但是我不能appendTheContentOf,因为

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

返回Results<t>

在多个继承对象上运行此方法的最佳方法是什么?

func sortPetByDate(array:[AnyObject]) -> [AnyObject]     {
    return array.sort{ ($0.0 as! Pet).date.compare(($0.1 as! Pet).date) == NSComparisonResult.OrderedAscending }
}

我的继承类的示例:

class Pet: Object {
    dynamic var date = NSDate()
    dynamic var title = String()
}

class Dog: Pet {
}

class Cat: Pet {
}

1 个答案:

答案 0 :(得分:5)

领域doesn't support polymorphic queries yet

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

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 }
var sortedPets = pets.sort { $0.date.compare($1.date) == .OrderedAscending }