Царство не вызывается в Свифте - PullRequest
0 голосов
/ 23 июня 2018

У меня есть синглтон realmService, использующий следующий код. Однако он не был вызван из homeController, когда я его запрашиваю.

var realmService = RealmService.shared.realm

class RealmService {

static let shared = RealmService()

lazy var realm: Realm = {
    let realm = try! Realm(configuration: config)
    print("Realm set up")
    return realm
}()

lazy private var realmURL: URL = {
    let appDir = try FileManager.default.url(for: .applicationSupportDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
    let url = appDir.appendingPathComponent("TEST.realm")
    return url
}()

lazy private var config: Realm.Configuration = {
    return Realm.Configuration(
        fileURL: self.realmURL,
        inMemoryIdentifier: nil,
        syncConfiguration: nil,
        encryptionKey: nil,
        readOnly: false,
        schemaVersion: 1,
        migrationBlock: nil,
        deleteRealmIfMigrationNeeded: false,
        objectTypes: nil
    )
}()
}

Я не получаю операторов печати, когда модель вызывает этот метод, например:

    print("Calling realm service")
    if let profile = realmService.objects(Profile.self).filter(predicate).last {}

Не уверены, что чего-то не хватает?

Спасибо!

РЕДАКТИРОВАТЬ: Удалены внешние методы и вызовы расширений для упрощения вопроса.

1 Ответ

0 голосов
/ 24 июня 2018

Проблема в том, что вы устанавливаете objectTypes на nil, поэтому классы моделей не добавляются в вашу область. Вы должны просто пропустить этот входной аргумент, что приведет к использованию значения по умолчанию, и, следовательно, все подклассы Object, объявленные в вашем проекте, будут добавлены в вашу конфигурацию.

На самом деле вы не должны передавать nil любым входным аргументам, которым вы не хотите назначать определенное значение, вы должны оставить эти входные аргументы и позволить им принимать значения по умолчанию.

return Realm.Configuration(
    fileURL: self.realmURL,
    readOnly: false,
    schemaVersion: 1,
    deleteRealmIfMigrationNeeded: false
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...