如何为 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 -> 领域管理器