处理可编码和核心数据

最近,我一直在为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上找到。