如何为 Realm 对象创建通用的 GET 方法?
How to make universal GET method for Realm objects?
我的 viewControllers 我经常使用 realm.objects(className.self) 从 className
table 下载数据。我想简化它,所以我用 get method
创建了另一个 swift 文件。
它看起来像这样:
class Realm_manager {
private init() {}
static let shared = Realm_manager()
let realm = try! Realm()
func getObjects() -> [customType]{
let result = realm.objects(customType.self)
return Array(result)
}
}
但是 getObjects
方法仅适用于 customType
对象。
在 viewController 中使用它可以正常工作:
let result = Realm_manager.shared.getObjects()
for item in result {
myArray.append(item)
}
//this works because myArray is of type customType.
我想让 getObjects 通用方法可以接受任何 class。
使用Generics
class RealmManager {
private init() {}
static let shared = RealmManager()
let realm = try! Realm()
func getObjects<T: Object>() -> [T] {
let result = realm.objects(T.self)
return Array(result)
}
}
用法:
let manager = RealmManager.shared
let dogs: [Dogs] = manager.getObjects()
注意:在Swift中我们通常不在类型名称中使用下划线,它们通常是大写的驼峰式。 Realm_manager -> 领域管理器
我的 viewControllers 我经常使用 realm.objects(className.self) 从 className
table 下载数据。我想简化它,所以我用 get method
创建了另一个 swift 文件。
它看起来像这样:
class Realm_manager {
private init() {}
static let shared = Realm_manager()
let realm = try! Realm()
func getObjects() -> [customType]{
let result = realm.objects(customType.self)
return Array(result)
}
}
但是 getObjects
方法仅适用于 customType
对象。
在 viewController 中使用它可以正常工作:
let result = Realm_manager.shared.getObjects()
for item in result {
myArray.append(item)
}
//this works because myArray is of type customType.
我想让 getObjects 通用方法可以接受任何 class。
使用Generics
class RealmManager {
private init() {}
static let shared = RealmManager()
let realm = try! Realm()
func getObjects<T: Object>() -> [T] {
let result = realm.objects(T.self)
return Array(result)
}
}
用法:
let manager = RealmManager.shared
let dogs: [Dogs] = manager.getObjects()
注意:在Swift中我们通常不在类型名称中使用下划线,它们通常是大写的驼峰式。 Realm_manager -> 领域管理器