如何将realm.objects(SomeObject.self).filter()传递给需要Results <object>的函数

时间:2018-01-06 13:22:11

标签: ios swift realm

此问题与RealmSwift Cannot cast Results<SomeOjbect> to Results<Object>

一起提供

我有一个Realm对象,如:

import RealmSwift
class SomeObject: Object
{
    @objc dynamic var datetime = ""
    @objc dynamic var city = 0

    convenience init(city: Int, datetime: String)
    {
        self.init()
        self.city = city
        self.datetime = datetime
    }
}

有一个框架:https://github.com/danielgindi/ChartsRealm,它从Realm中提取数据并绘制图表。该框架是用Swift编写的,也可以在Objc中使用,因此它结合了RLMObjectObject类型。

它具有如下功能:

public convenience init(results: Results<Object>?, xValueField: String?, yValueField: String, label: String?)

需要Results<Object>?,但我无法将我的过滤结果设为Results<Object>类型。 e.g。

realm.objects(SomeObject.self).filter("city=0")

它是Results<SomeObject>,无法转换为Results<Object>,如RealmSwift Cannot cast Results<SomeOjbect> to Results<Object>

中所述

我该如何解决?

因为ChartsRealm框架中的演示,它只是在+ (RLMResults *)allObjectsInRealm:(RLMRealm *)realm;中读取Realm中的所有对象,但在现实世界中,我们通常需要先筛选结果。

如果我真的无能为力,我可以接受修改框架功能参数,为框架提交拉取请求,只是为了让它工作。

1 个答案:

答案 0 :(得分:0)

Results<Object>作为一种类型没有任何意义,ChartsRealm中的方法应该是采用Results<T>的通用方法。

因为在这个特定情况下,ChartsRealm对Results<Object>所做的一切都是使用ObjectiveCSupport.convert()来获得RLMResultsunsafeBitCast()Results<Object>应该可以正常工作。您也可以自己致电ObjectiveCSupport.convert()并将ChartsRealm传递给RLMResults而不是Swift Results对象。