ios - 没有在 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 {}
不确定是否缺少某些东西?
谢谢!
编辑:删除外部方法和扩展调用以简化问题。
解决方案
问题是您设置objectTypes
为nil
,因此没有模型类添加到您的领域。您应该简单地保留该输入参数,这将导致使用默认值,因此Object
项目中声明的所有子类都将添加到您的配置中。
实际上,您不应该传入nil
任何不想为其分配特定值的输入参数,而应该省略这些输入参数并让它们采用默认值。
return Realm.Configuration(
fileURL: self.realmURL,
readOnly: false,
schemaVersion: 1,
deleteRealmIfMigrationNeeded: false
)
推荐阅读
- c++ - Clang 找不到基本的头文件
- .net-standard - 类库(标准 2.1 或核心 3.1):找不到命名空间名称“IWebHostEnvironment”
- c# - 使用 HttpClient 下载文件,同时发送 POST 数据
- error-handling - 在 SAS 的 DO 循环中使用宏变量时出错:在表达式中找不到所需的运算符
- mysql - MySql 在 wordpress 中多次崩溃
- javascript - Javascript:for循环中的映射总是返回最后一项
- entity-framework-core - DbSet 没有用于删除范围的异步方法?
- python - 如何按每个组的大小设置滚动窗口大小?
- c - ?: 运算符在 C 中究竟是如何工作的?
- api - YouTube API 服务合规审查