我想写这样的东西:
fileprivate var container: ModelContainer? = nil
func sharedModelContainer(inMemory: Bool) -> ModelContainer {
if let result = container, result.isInMemory == inMemory {
return result
}
let schema = Schema([
ModelClass1.self ,ModelClass2.self, ModelClass3.self
])
let modelConfiguration = ModelConfiguration(schema: schema, isStoredInMemoryOnly: inMemory)
do {
let result = try ModelContainer(for: schema, configurations: [modelConfiguration])
DispatchQueue.main.async {
result.mainContext.undoManager = UndoManager()
}
container = result
return result
} catch {
fatalError("Could not create ModelContainer: \(error)")
}
}
字符串
但我还没想好如何实施
extension ModelContainer {
var isInMemory: Bool {
???
}
}
型
2条答案
按热度按时间mnemlml81#
我相信你正在寻找类似以下的东西:
字符串
mnemlml82#
关于ModelConfiguration的文档并不清楚,如果一个模型容器存在多个配置,它们是如何处理的。
对于一个基本场景,当配置对象不超过一个时,
字符串
请注意强制解包,如果没有提供ModelConfiguration,似乎总是会为我们创建一个。
问题是当我们有多个配置时会发生什么,我还没有能够测试这是一个好方法,但我想我们必须有一个更高级的函数,我们需要为给定的PersistentModel类型(其他过滤器也是?)识别正确的ModelConfiguration,以从正确的示例读取属性。