处理可编码和核心数据
最近,我一直在为iOS应用程序实现缓存机制。 为了实现这一目标,我设定了以下目标:
- 利用
Codable
协议轻松解析来自Web服务的JSON响应并创建适当的模型实例。 - 将所需的模型实例存储在Core Data中。
这项任务是一次有趣的学习经历。 因此,我决定回到我的示例应用程序之一,以说明如何使数据模型支持Codable
并与Core Data Codable
工作。
模型:NSManagedObject和Codable
我开始的示例应用程序只有一个简单的模型User
,如下所示:
Core Data的用例非常简单:允许离线使用该应用程序(即:当网络连接不可用时)。 实现此目的的最简单方法是,每当应用程序具有网络连接时,就删除并重新创建Core Data数据库。 这就是为什么在parse(…)
方法中,在实际解析JSON响应之前调用clearStorage()
:在开始添加已解析的User
实例之前,我们想清除存储(数据库)。 清除存储所需的代码非常简单,因为我们只需要删除一个表即可:
为了检索存储的User
实例, UserController
提供了fetchFromStorage()
方法:
两种方法都通过NSFetchRequest
执行各自的任务。 通过实现上述两种方法,我们现在拥有了与Core Data和User
实例成功交互所需的一切。
结论
在这篇文章中,我描述了我使用Codable
和Core Data的个人经历。 特别是,我专注于如何无缝解析JSON响应并将结果模型存储在Core Data中的适当数据库表中。
这篇文章中说明的示例应用程序的代码可在GitHub上找到。