Ios 未在Swift中调用的域
我有一个realmService单例,它使用以下代码。但是,当我请求它时,它没有从homeController调用Ios 未在Swift中调用的域,ios,swift,database,realm,Ios,Swift,Database,Realm,我有一个realmService单例,它使用以下代码。但是,当我请求它时,它没有从homeController调用 var realmService = RealmService.shared.realm class RealmService { static let shared = RealmService() lazy var realm: Realm = { let realm = try! Realm(configuration: config) print("R
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 {}
不确定是否有东西丢失了
谢谢
编辑:删除外部方法和扩展调用以简化问题。问题在于您将
对象类型设置为nil
,因此不会向您的领域添加任何模型类。您只需省略输入参数,这将导致使用默认值,因此项目中声明的所有Object
子类都将添加到配置中
实际上,您不应该将nil
传递给任何您不想为其指定特定值的输入参数,而是应该忽略这些输入参数,让它们采用默认值
return Realm.Configuration(
fileURL: self.realmURL,
readOnly: false,
schemaVersion: 1,
deleteRealmIfMigrationNeeded: false
)