CoreData 学习笔记八-CoreData 实体增加属性并支持 iCloud 同步

最近项目中需要拓展一下已经定义好的实例字段,同时原本的实例是支持l iCoud 同步的,新增加实力(Entity)字段后,我们的预期是「老版本升级上来的用户能正常使用,同时还能正常进行 iCloud 同步」,即用户对字段升级毫无感知。 这篇文章就介绍技术实现的具体细节。 这里还是用 Student 学生这个实例来举例子,原始有 age, name, school 三个 ...

CoreData 学习笔记七-CoreData+TableView差量数据源更新

这篇笔记是介绍使用 CoreData+TableView 中使用差量数据源(Diffable Datasource)。使用差量数据源的起因是,在 CoreData+TableView+iCloud 使用过程中遇到的一个 Crash 的问题。经常在同步的时候遇到下面这个崩溃报错: > ** Terminating app due to uncaught exception 'NSInternalI ...

CoreData 学习笔记五-CoreData+TableView使用

这篇笔记主要是介绍 CoreData 和 TableView 一起使用时候的方法。 使用 CoreData 应用中有很多列表展示的场景底层数据需要读取本地数据,我以前的做法并没有遵循官方文档的做法使用 [NSFetchedResultsController](https://www.google.com/search?q=NSFetchedResultsController&oq=NSFetch ...

CoreData 学习笔记四-CoreData+CloudKit使用流程

这篇笔记主要是参考苹果官方文档的配置流程来介绍 CoreData 如何配置支持 CloudKit,按步骤介绍一下整体的流程 创建工程 在创建工程的时候勾选使用 CoreData,以及 Host in iCloud,这样会在初始化 CoreData Stack 的时候直接使用 NSPersistentCloudKitContainer 进行初始化,`NSPersistentCloudK ...

CoreData 学习笔记三+多Context使用介绍

这篇文章主要是介绍如何在 CoreData 中使用多个 Context(本文中提到的 Context 都指的是 NSManagedContext) 多 Context 基础概念 CoreData 并不是线程安全的,如果不额外创建线程的话 CoreData 就是一直在主线程运行的。但是有一些情况是需要额外创建线程去进行 CoreData 操作。这时候就要格外注意 `NSManagedObj ...

CoreData 学习笔记二-CoreData基础使用(创建Entity+增删改查)

这篇文章主要是总结一些常见的 CoreData 的操作。 我们先定义数据结构如下,这里我们的数据结构对应代码的生成方式是 Xcode 自动生成的,看图右侧的 Class → Codegen 部分。 coredata > 对于每个属性还有更细致的设置,比如如果你不想要某个属性持久化,而是临时使用,可以设置属性为 Transient,等这部 ...

CoreData 学习笔记一-CoreData基本概念

这篇笔记主要是介绍一些 CoreData 的基本概念。Core Data 是苹果提供的数据持久化方案。相对于 Sqlite,CoreData 提供了原生的 ORM 的支持,以及可以和苹果的 Cloud 服务进行通信,对于独立开发者来说,这是成本很低的数据存储方案,目前也是很多开发者使用的技术栈。 Core Data 我自己感觉稍微有一定的使用门槛,不过苹果这几年也在不断地降低CoreData A ...

iOS获取进程虚拟内存区域代码

最近看深入理解计算机系统内存章节部分,看完之后想着实操一下,于是从最熟悉的 macOS/iOS 下手,看一下进程的虚拟内存区域是如何分布的。 直接上代码 int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"He ...

macOS XPC 上手

XPC 是 macOS 里经常用到的进程间通信机制。本文不关注 XPC 的内部机制,而是一篇教你如何上手 XPC 的文章。 创建 macOS 工程 FRTestXPC,选择 Cocoa App Template。 在工程 FRTestXPC 里点击增加 Target,在弹出框搜索 XPC, 选择搜索结果中的 XPC Service,然后命名 `Target ...