此问题与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中使用,因此它结合了RLMObject
和Object
类型。
它具有如下功能:
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中的所有对象,但在现实世界中,我们通常需要先筛选结果。
如果我真的无能为力,我可以接受修改框架功能参数,为框架提交拉取请求,只是为了让它工作。
答案 0 :(得分:0)
Results<Object>
作为一种类型没有任何意义,ChartsRealm中的方法应该是采用Results<T>
的通用方法。
因为在这个特定情况下,ChartsRealm对Results<Object>
所做的一切都是使用ObjectiveCSupport.convert()
来获得RLMResults
,unsafeBitCast()
到Results<Object>
应该可以正常工作。您也可以自己致电ObjectiveCSupport.convert()
并将ChartsRealm传递给RLMResults
而不是Swift Results
对象。