首页 > 解决方案 > 没有在 Swift 中调用领域

问题描述

我有一个使用以下代码的 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 {}

不确定是否缺少某些东西?

谢谢!

编辑:删除外部方法和扩展调用以简化问题。

标签: iosswiftdatabaserealm

解决方案


问题是您设置objectTypesnil,因此没有模型类添加到您的领域。您应该简单地保留该输入参数,这将导致使用默认值,因此Object项目中声明的所有子类都将添加到您的配置中。

实际上,您不应该传入nil任何不想为其分配特定值的输入参数,而应该省略这些输入参数并让它们采用默认值。

return Realm.Configuration(
    fileURL: self.realmURL,
    readOnly: false,
    schemaVersion: 1,
    deleteRealmIfMigrationNeeded: false
)

推荐阅读