- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
RealmSwift 版本:最新的 master 分支
所以我有一个像这样的 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
}
}
有一个像
这样的函数调用static func createlineData(from results: Results<Object>?) -> LineChartData
现在我获取一些结果并传递给 createLineData
:
let realm = try! Realm()
let results = realm.objects(SomeObject.self).filter("city = \(city.rawValue)")
let lineData = createlineData(from: results as? Results<Object>)
编译器警告我类型转换总是失败:
Cast from Results<"SomeObject"> to unrelated type Results<"Object"> always fails
我很困惑,因为 SomeObject
只是一个子类。我该如何解决?提前致谢。
更新:
我想做的是,参数
static func createlineData(from results: Results<Object>?) -> LineChartData
永远无法更改,所以我需要查询以根据 city
进行过滤这是枚举,将它们传递给 createlineData(from results: Results<Object>?)
,并访问其他属性,如 datetime
稍后在 createlineData
, 来自 Results<Object>
最佳答案
在 Swift 中,每个泛型类都代表它自己的类型,即使你有一个泛型类,其中泛型类型参数是另一个以父类(super class)作为泛型参数的泛型类的子类,这两个泛型类也不会通过继承相关。
这就是为什么你不能施放 Results<SomeObject>
的原因至 Results<Object>
尽管SomeObject
是 Object
的子类.
这是一个简单的例子,用泛型类来表示同样的问题:
class A{}
class B:A{}
class GenericClass<T> {
let val:T
init(val:T) {
self.val = val
}
}
let genericA = GenericClass<A>(val: A())
let genericB = GenericClass<B>(val: B())
let upcasted = genericB as? GenericClass<A> //warning: Cast from 'GenericClass<B>' to unrelated type 'GenericClass<A>' always fails
此外,Results
输入 Realm
是同质集合类型,因此不能存储 Object
的不同子类在同一Results
对象,因此转换为 Results<Object>
无论如何都没有意义。如果您需要将来自不同 Realm 模型类的对象存储在同一个集合中,您将需要牺牲 Results
的自更新特性。并坚持将您的对象存储在 Array
中例如。
关于ios - RealmSwift 无法将结果 <SomeOjbect> 转换为结果 <Object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48125923/
RealmSwift 版本:最新的 master 分支 所以我有一个像这样的 Realm 对象: import RealmSwift class SomeObject: Object { @o
我是一名优秀的程序员,十分优秀!