所以我正在寻找一种从领域访问给定类型的所有对象的好方法。
extension Object {
static func getAll<T: Object>() -> Results<T>
{
let realm = try! Realm()
let sorts = [SortDescriptor(property: "createdAt")]
let objects = realm.objects(T).sorted(sorts)
return objects
}
}
示例:
class Person: Object {
dynamic var createdAt = NSDate()
}
然后我想打电话:
Person.GetAll()
问题是这会返回&#34;结果&lt; T&gt;&#34;。但我希望它根据类类型返回结果。所以对于这种情况&#34;结果&lt;人&gt;&#34;。我假设T只是通用对象。
我觉得我真的很亲近,只是还没到那里。
这有意义吗?
答案 0 :(得分:0)
只有在您提示编译器要返回的类型时才会起作用,例如
let results: Results<Person> = Person.getAll()
但是你无法通过这样的方式定义方法,即你调用它的类将填充类型参数。您需要为此目的使用Self
,但最终会出现编译器错误:
'Self'仅在协议中可用或作为类中方法的结果;你的意思是'对象'吗?
答案 1 :(得分:-1)
我认为没有任何问题。如果您想获得所要求的类型数组,请执行Person.GetAll().flatMap { $0 }