最近项目中需要拓展一下已经定义好的实例字段,同时原本的实例是支持l iCoud 同步的,新增加实力(Entity)字段后,我们的预期是「老版本升级上来的用户能正常使用,同时还能正常进行 iCloud 同步」,即用户对字段升级毫无感知。 这篇文章就介绍技术实现的具体细节。 这里还是用 Student 学生这个实例来举例子,原始有 age, name, school 三个 ...
最近项目中需要拓展一下已经定义好的实例字段,同时原本的实例是支持l iCoud 同步的,新增加实力(Entity)字段后,我们的预期是「老版本升级上来的用户能正常使用,同时还能正常进行 iCloud 同步」,即用户对字段升级毫无感知。 这篇文章就介绍技术实现的具体细节。 这里还是用 Student 学生这个实例来举例子,原始有 age, name, school 三个 ...
这篇笔记是介绍使用 CoreData+TableView 中使用差量数据源(Diffable Datasource)。使用差量数据源的起因是,在 CoreData+TableView+iCloud 使用过程中遇到的一个 Crash 的问题。经常在同步的时候遇到下面这个崩溃报错: > ** Terminating app due to uncaught exception 'NSInternalI ...
这篇笔记主要是介绍 TableView+CoreData+iCloud 同步的技术细节。之前的笔记已经介绍过如何在工程和代码中配置 CloudKit 同步了,这里不再赘述。 CoreData+iCloud 同步机制说明 CoreData 数据同步的具体流程其实[官方文档](ht ...
这篇笔记主要是介绍 CoreData 和 TableView 一起使用时候的方法。 使用 CoreData 应用中有很多列表展示的场景底层数据需要读取本地数据,我以前的做法并没有遵循官方文档的做法使用 [NSFetchedResultsController](https://www.google.com/search?q=NSFetchedResultsController&oq=NSFetch ...
这篇笔记主要是参考苹果官方文档的配置流程来介绍 CoreData 如何配置支持 CloudKit,按步骤介绍一下整体的流程 创建工程 在创建工程的时候勾选使用 CoreData,以及 Host in iCloud,这样会在初始化 CoreData Stack 的时候直接使用 NSPersistentCloudKitContainer 进行初始化,`NSPersistentCloudK ...
这篇文章主要是介绍如何在 CoreData 中使用多个 Context(本文中提到的 Context 都指的是 NSManagedContext) 多 Context 基础概念 CoreData 并不是线程安全的,如果不额外创建线程的话 CoreData 就是一直在主线程运行的。但是有一些情况是需要额外创建线程去进行 CoreData 操作。这时候就要格外注意 `NSManagedObj ...
这篇文章主要是总结一些常见的 CoreData 的操作。 我们先定义数据结构如下,这里我们的数据结构对应代码的生成方式是 Xcode 自动生成的,看图右侧的 Class → Codegen 部分。 coredata > 对于每个属性还有更细致的设置,比如如果你不想要某个属性持久化,而是临时使用,可以设置属性为 Transient,等这部 ...
这篇笔记主要是介绍一些 CoreData 的基本概念。Core Data 是苹果提供的数据持久化方案。相对于 Sqlite,CoreData 提供了原生的 ORM 的支持,以及可以和苹果的 Cloud 服务进行通信,对于独立开发者来说,这是成本很低的数据存储方案,目前也是很多开发者使用的技术栈。 Core Data 我自己感觉稍微有一定的使用门槛,不过苹果这几年也在不断地降低CoreData A ...