如何实现ModelContainer的isInMemory属性判断是否为内存存储?
如何判断ModelContainer是否为内存存储?
你可以通过访问ModelContainer的configurations属性,检查其中ModelConfiguration实例的isStoredInMemoryOnly值来实现这个扩展:
extension ModelContainer { var isInMemory: Bool { // 场景1:确保所有配置都是内存存储 configurations.allSatisfy { $0.isStoredInMemoryOnly } // 场景2:仅检查第一个配置(适用于你单例代码中只用单个配置的情况) // configurations.first?.isStoredInMemoryOnly ?? false } }
说明
ModelContainer的configurations集合保存了创建容器时传入的所有配置规则,每个ModelConfiguration的isStoredInMemoryOnly属性直接对应了该配置是否使用内存存储。
- 如果你需要容器内所有模型都使用内存存储,用
allSatisfy校验全部配置。 - 像你提供的单例代码中,始终只用单个
ModelConfiguration创建容器,直接取第一个配置的属性即可,?? false是为了处理极端情况下配置为空的边界场景。
替换你扩展中的???部分后,就能和你的单例逻辑完美配合,判断容器是否为内存存储类型。
内容的提问来源于stack exchange,提问作者Wizard of Kneup
相关产品推荐
相关产品推荐

