Как сделать универсальный метод GET для объектов Realm? - PullRequest
1 голос
/ 19 февраля 2020

В моих viewControllers я часто использую realm.objects (className.self) для загрузки данных из таблицы className. Я хотел упростить это, поэтому я создал другой файл swift с get method.
Это выглядит так:

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 универсальным методом, который может принимать любой класс.

1 Ответ

2 голосов
/ 19 февраля 2020

Использование Дженерики

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 -> RealmManager

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...