核心数据和 SwiftUI Core Data、SwiftUI 和 MVVM 打包在一起
问题
自从 SwiftUI 于 2019 年问世以来,我一直在寻找使用 Core Data 的最佳方式:用于处理持久存储数据的旧主宰。我经常对它与 SwiftUI 思维方式的冲突感到不满;促使我将与数据相关的东西暴露给视图,并威胁到我的 MVVM 架构。Apple 默认的 @FetchRequest 非常适合简单的视图,但随着项目变得越来越复杂,它开始变得有点乏味,更不用说在视图中使用 CoreData 的需要了。
所以,我做了我的研究。Donny Walls和Karin Prater提供了很多令人惊叹的内容。通过一些实验,我使用我所学的所有知识想出了我自己的系统。该系统遵循三个重要原则:
- 视图不应该知道核心数据的存在(包括任何 NSManagedObject)
- 所有与数据相关的任务都应由充当唯一真实来源的单例类处理
- 我应该能够在内存中无缝使用预览和 XCTests
一个解法
那么我是如何做到这一点的。
持久存储
让我们从核心数据模型开始。

对于此示例,我有两个实体,它们之间具有一对多关系:TaskMO 和 ProjectMO。出于一个重要的原因,
本文介绍了一种在SwiftUI应用中使用CoreData进行数据管理的方法,遵循MVVM架构,确保视图不直接接触CoreData,而是通过一个名为DataManager的单例类处理数据操作。该系统利用OrderedDictionary优化查找,使用NSFetchedResultsControllerDelegate自动更新数据,并支持预览和XCTests。
订阅专栏 解锁全文
716

被折叠的 条评论
为什么被折叠?



