Swift 创建不同类型的静态扩展
因此,我正在寻找一种从领域访问给定类型的所有对象的好方法Swift 创建不同类型的静态扩展,swift,realm,Swift,Realm,因此,我正在寻找一种从领域访问给定类型的所有对象的好方法 extension Object { static func getAll<T: Object>() -> Results<T> { let realm = try! Realm() let sorts = [SortDescriptor(property: "createdAt")] let objects = realm.objects(T
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
}
}
然后我想打电话:
Person.GetAll()
问题是它返回“Results这有意义吗?我看不出有什么问题。如果您想获得所请求类型的数组,只需执行
Person.GetAll().flatMap{$0}
这只在您向编译器提示要返回的类型时起作用,例如
let results: Results<Person> = Person.getAll()
let results:results=Person.getAll()
但是,您不能以这样的方式泛型地定义方法,即您正在调用它的类将填充类型参数。为此,您需要使用Self
,但这将导致编译器错误,如下所示:
“Self”仅在协议中可用,或作为类中方法的结果;你是说“物体”吗
你所要求的没有道理。更多阅读,请查看。如果我在我的对象中添加了协议,该怎么办?我将如何实现它,以便只需要在模型类中返回类似“let type=Person.self”的内容?
let results: Results<Person> = Person.getAll()