首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Ask Apple 2022 与 Core Data 有关问答

A:每个版本添加一个托管对象模型会更安全,但是如果您从一个版本到另一个版本更改经过充分测试以表明适用于轻量级迁移推断,那么单个托管对象模型就足够了。...具体内容请参阅 CoreData使用持久化历史跟踪[13] 一文。如何为 NSDictionary 创建模型Q:我有一个 NSDictionary 值,需要存储 Core Data 。...苹果工程师建议他通过创建另一个 Configuration 方式,将这些数据保存在本地存储( 不进行同步 ),只将汇总后信息保存在同步存储。...使用 Core Data with CloudKit ,对数据模型最好采用只增不改不减调整原则。...如果确实需要对数据模型有破坏性修改,最好创建两个 Container( 分别使用不同 Model ),使用者确保原始数据都同步到本地后,再将旧数据转换至 Container 之上。

2.8K20

储存篇 - CoreData使用大全

【一】前言 Core Data框架提供了对象-关系映射(ORM)功能,即能够将OC对象转化成数据保存在SQLite3数据库文件,也能够将保存数据数据还原成OC对象。...【四】使用系统自动创建CoreData ? ? 系统帮我们AppDelegate创建了一个NSPersistentContainer实例,以及一个saveContext方法。...使用系统自动创建CoreData,非常方便,我们只需要在 xxxxx.xcdatamodeld 添加好实体即可,然后就可以直接使用了。...但是使用过程中会出现大量代码, 而且CoreData学习曲线比较陡峭,如果掌握不好,使用过程很容易造成其他问题。...另外还有其他第三方存储库: 可以存对象数据库realm-cocoa使用时参考这篇文章:移动端数据王者:realm ---- 参考文章: iOS 开发之 CoreData CoreData使用

2.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

如何在 Core Data 中进行批量操作

关于如何让不同持久化存储拥有同样实体模型,请参阅 同步本地数据库到 iCloud 私有数据[5] 对应章节 除了通过 NSFetchRequest 来指定需要删除数据外,还可以使用 NSBatchDeleteRequest...,详情请阅读 Core Data 是如何在 SQLite 中保存数据[7] ) SQLite 完成更新后,持久化存储会更新行缓存,将数据以及数据版本更新到当前状态 调用所有更新 item...批量操作为什么快 上面使用传统方式实现功能与本文之前介绍批量更新代码完全一样。那么 Core Data 使用批量更新代码内部操作过程是如何呢?...比如说以数据为准,或者以数据数据为准。 Core Data 会根据是否在数据模型开启了约束已经定义了何种合并策略来创建批量添加操作对应 SQL 语句。.../ [7] Core Data 是如何在 SQLite 中保存数据: https://www.fatbobman.com/posts/tables_and_fields_of_CoreData/ [8

1.8K30

SwiftUI 与 Core Data —— 安全地响应数据

本文将介绍可能在视图中产生严重错误原因,如何避免,以及保证视图数据变化实时响应前提下如何使用者提供更好、更准确信息。由于本文会涉及大量前文中介绍技巧和方法,因此最好一并阅读。...可能开发者会有这样疑问,假如某个实体属性模型中被定义为可选,且托管对象类型声明也为可选值类型( 例如上方 timestamp 属性 ),那么如果在可以保证 save 一定有值情况下,是否可以使用使用...从另一个角度来看,即使托管上下文中使用 delete 方法删除该实例数据对应数据,但如果该托管对象实例仍被代码或视图所引用,Swift 并不会销毁该实例,此时,托管对象上下文会将该实例 managedObjectContext...由于 AnyConvertibleValueObservableObject 符合 ObservableObject 协议,一样会引发 Cell 视图更新一轮渲染,如果我们限定 convertToGroup...任何可能脱离视图传递过程都应使用托管对象实例对应值类型版本。更改数据进行二次确认为了避免对主线程造成过多影响,我们通常会在私有上下文中进行会对数据产生变化操作。

3.2K20

iOS开发之表视图爱上CoreData

CoreData负责Model实体和sqllite建立关联,数据模型实体类就相当于JavaJavaBean, 而CoreData功能和JavaEEHibernate功能类似,最基本是两者都有通过对实体操作来实现对数据...下面将要介绍才是这篇博客重点:我们如何使用CoreData才会让TableView爱上它呢?...和AppDelegate.m中进行相应配置,并且同时还自动生成一个以本应用名命名Data Model文件,我们可以Data Model文件添加我们数据模型, 添加好数据模型我们会在生成数据实体类使用...把传过来实体对象进行更新,再保存。...3.之前保存ViewController如果Person为空,说明是执行添加记录方法我们就生成一个person, 如果Person不为空则不新建Person对象,直接更新保存

2.1K80

Ask Apple 2022 与 Core Data 有关问答 (下)

如何更新通过文件系统删除 Core Data 数据 Spotlight 索引Q:使用 Spotlight 索引 Core Data 内容,是否可以指定 Spotlight 索引存储位置?...应用程序中一次性加载 CoreData 数据并将其保存在局部变量中使用多个 FetchRequests我目前 SwiftUI 中使用 UICalendarView 并从 CoreData 获取数据...异步保存Q:嗨,将照片数据保存到 Core Data 使用异步是否有必要?谢谢!A:你是问是否应该使用 perform 或 performAndWait?...数据手动排序Q:应用程序,用户可以视图中通过拖放来重新排列项目。...我数据模型中有一个 Int16 类型 userOrder 属性,视图行被重新排序后,有什么好方法来保存数据顺序?

3.2K20

iOS CoreData (一) 增删改查

Core Data是iOS5之后才出现一个框架,本质上是对SQLite一个封装,它提供了对象-关系映射(ORM)功能,即能够将OC对象转化成数据保存在SQLite数据库文件,也能够将保存数据数据还原成...OC对象,通过CoreData管理应用程序数据模型,可以极大程度减少需要编写代码数量!...更新于2018.3.7 iOS CoreData (二) 版本升级和数据库迁移 [增删改查.gif] 1、首先创建一个coreData 模型文件:系统创建或者自己创建 [系统创建模型文件.png]...,iOS10以下和iOS10之后生成不一样,出现了一个类NSPersistentContainer。...谓词匹配指令关键字通常使用大写字母 2. 谓词可以使用格式字符串 3.

1.2K70

实时切换 Core Data 云同步状态

对于 Import 数据,该模块获得云端数据变更通知后( 通过开启 Remote notifications ),会将网络端变更数据保存到 SQLite ,供转换模块使用。...所有的网络同步操作都将以日志形式保存在 SQLite iCloud 账户状态发生变动后,NSPersistentCloudKitContainer 将使用这些同步记录作为数据重置凭据。...6本节将根据演示代码对部分实现细节进行说明多个 Container 使用同一个 Data Model一个应用程序,Core Data Data Model( 使用数据模型编辑器创建模型文件 )...我们需要在 NSPersistentContainer 实例对该通知进行响应,并将同步数据合并到当前视图上下文中。...如何处理共享数据库和公共数据同步鉴于 NSPersistentContainer 并没有提供数据鉴权方面的 API,在你应用使用了共享数据库或公共数据库同步功能,可以采用类似如下方式来处理:import

1.4K20

Core Data 基础

2) (3) 第 6 步:修改 获取要修改 实体描述 设置对象属性 保存数据 (1)tableview代理方法内实现修改数据 (2) viewDidLoad方法 设置代理 第 7 步:删除...获取要删除 实体描述 让管理上下文删除对象 —— 从内存删除 保存数据操作 —— 从数据删除 二、简介CoreData数据存储 Core Data 是 iOS SDK 里一个很强大框架...ID (6)将视图控制器做关联 (7)执行&连线,生成方法:newPerson 使用代码修饰界面 第 3 步:创建数据模型 实体 (entity)是数据模型基石 一个实体表示应用程序中有意义一部分数据...2) (3) 第 6 步:修改 获取要修改 实体描述 设置对象属性 保存数据 (1)tableview代理方法内实现修改数据 (2) viewDidLoad方法 设置代理 第 7 步:删除...获取要删除 实体描述 让管理上下文删除对象 —— 从内存删除 保存数据操作 —— 从数据删除

87530

iOS面试题梳理(二)

当我们释放我们对象,为什么需要调用[super dealloc]方法,它位置又是如何呢因为子类某些实例是继承自父类,因此需要调用[super dealloc]方法, 来释放父类拥有的实例,其实也就是子类本身...提供是对象-关系映射功能,也就是说,CoreData可以将Objective-C对象转换成数据保存到SQL,然后将保存数据还原成OC对象。...8.CoreData特征: 1.通过CoreData管理应用程序数据模型,可以极大程度减少需要编写代码数量。 2.将对象数据存储SQLite数据库已获得性能优化。...3.提供NSFetchResultsController类用于管理表视图数据,即将Core Data持久化存储视图中,并对这些数据进行管理:增删查改。...2.NSManageObjectContext:管理对象上下文,持久性存储模型对象,参与数据对象进行各种操作全过程,并监测数据对象变化,以提供对undo/redo支持及更新绑定到数据UI。

1.2K101

「死磕」Core Data——入门

NSAttributeDescription类实例。就是Entity特性,对应App创建类属性。 Relationship / 关系 「实体关系」。...就是需要保存数据,是NSManagenObject类实例。...iOS10之前,如果需要支持版本迁移功能,需要在创建NSPersistentStore类实例,传入相应options参数。...简单说,假如修改了数据模型(比如修改了. xcdatamodel文件:增加了实体,增加了特性等等),为了防止使用更新App后,由于数据模型不一致导致崩溃,需要进行一定处理,这个处理,他们叫「版本迁移...如何创建NSManagedObject子类 创建NSManagedObject子类,有如下两种办法 方法1:直接Command + N创建一个类,继承NSManagedObject类,然后定义属性和模型文件一致

1.1K20

iOS CoreData (一) 增删改查

Core Data是iOS5之后才出现一个框架,本质上是对SQLite一个封装,它提供了对象-关系映射(ORM)功能,即能够将OC对象转化成数据保存在SQLite数据库文件,也能够将保存数据数据还原成...更新于2018.3.7 iOS CoreData (二) 版本升级和数据库迁移 ? 增删改查.gif 1、首先创建一个coreData 模型文件:系统创建或者自己创建 ?...,iOS10以下和iOS10之后生成不一样,出现了一个类NSPersistentContainer。...iOS10以下系统创建模型文件自动生成关联数据代码(转摘).jpeg ? iOS10之后系统自动生成广联数据代码.png ?...谓词匹配指令关键字通常使用大写字母 2. 谓词可以使用格式字符串 3.

1.1K80

Core Data with CloudKit(二)——同步本地数据库到iCloud私有数据

如果是两个模拟器间进行测试,两端都需要做类似操作。 苹果文档对同步+分发时间描述为不超过1分钟,实际使用通常都会在10-30秒左右。支持批量数据更新,无需担心大量数据更新效率问题。...CloudKit Schema并不支持Core Data Model所有功能、配置,因此设计可同步Core Data项目,请注意以下限制,并确保你创建了一个兼容数据模型。...不过当写入Movie实例,协调器只会将实例写到最先包含MovieDescription,因此需要特别注意添加顺序。...Tracking•使用localContainer创建上下文写入Movie实例实例将只保存到本地,而不进行网络同步)•处理NSPersistentStoreRemoteChange通知,将从localContainer...总结 本文中,我们探讨了如何实现将本地数据库同步到iCloud私有数据库。 下一篇文章让我们一起探讨如何使用CloudKit仪表台。从另一个角度认识Core Data with CloudKit。

1.9K20

MagicalRecord,一个简化CoreData操作工具库

活动记录是一种访问数据数据方式.一个数据表或者试图被装箱进一个类;因此,一个对象实例对应表一行数据.创建对象之后,会往表添加一行以保存数据.加载对象,从数据获取信息;当对象更新...,表对应行也会被更新.装箱类实现存取方法和分别对应表或视图中每一列属性...MR_context]; 这将会创建一个对象管理上下文,和默认上下文对象有相同对象模型和持久化存储;但是另一个线程中使用时,是线程安全.它自动设置默认上下文对象为父级上下文....如果一个CoreData模型属性或关系名与要导入数据某个键匹配,那你不需要做任何事 - 键对应值会自动导入....往往,要导入数据键和结构和你实体属性与关系不匹配.在这种情况下,你需要告诉 MagicalRecord 如何映射你要导入数据键到你CoreData模型匹配属性或关系.

1.5K50

架构之路 (七) —— iOS AppSOLID原则(一)

shared 实例,但 preview container不从数据库文件读取。...现在,您需要更改使用 ExpenseModel 代码实例使用协议。...此外,如果您决定放弃 Core Data 并使用其他一些存储解决方案,依赖倒置将让您轻松更换底层模型实现,而无需更改视图任何代码。 当您想要创建单元测试,同样概念也适用。...两种方法之间明显区别是: ExpensesView 负责通知 AddExpenseView如何执行保存。 如果修改要保存字段,则需要将此更改传播到两个视图。...但是,如果您直接传递数据源,则列表视图将不负责有关如何保存信息任何详细信息。 但是这种方法将使由 ReportReader 提供其他功能对 AddExpenseView 可见。

4.7K10

iOSCoreData数据管理系列四——进行数据与页面的绑定

iOSCoreData数据管理系列四——进行数据与页面的绑定 一、引言     在上一篇博客,我们讨论了CoreData框架添加与查询数据操作,事实上,大多数情况下,这些数据都是由一个UITableView...表视图进行展示,因此,CoreData框架还未开发者提供了一个类NSFetchedResultsController,这个类作为桥接,将视图数据进行绑定。...initWithFetchRequest:managedObjectContext:sectionNameKeyPath:cacheName:方法,如果设置第三个参数,则会以第三个参数为键值进行数据分区...四、将数据变化映射到视图 //数据将要改变时调用方法 - (void)controllerWillChangeContent:(NSFetchedResultsController *)controller...        case NSFetchedResultsChangeUpdate:             break;     } } //数据改变回调代理 - (void)controller

69310

Core Data with CloudKit (一) —— 基础

Core Data with CloudKit (一) —— 基础 这是系列文章第一篇,该Core Data with CloudKit系列主要介绍了如何使用CoreData同步CloudKit三种数据库类型...该订阅只能用于私有数据库和共享数据自定义CKRecordZone,并只会通知订阅创建者。以后文章,我们可以看到Core Data with CloudKit是如何在私有库中使用该订阅。...,为其返回自上次刷新后数据库发生变化4.将远端数据转换成本地数据(删除、更新、添加等)5.由于视图上下文automaticallyMergesChangesFromParen属性设置为真,本地数据变化将自动视图上下文中体现出来...在下一篇文章我们将探讨如何使用Core Data with CloudKit实现本地数据库和私有数据同步。...PS:介绍如何使用NSPersistentContainer文章并不少,但同其他Core Data功能一样,用好并不容易。两年多使用,我便碰到不少问题。

95830

Core Data with CloudKit (六) —— 共享数据

当所有者创建了一个共享关系后,系统将自动为其私有数据创建一个自定义区域(com.apple.coredata.cloudkit.share.xxx-xx-xx-xx-xxx),并将共享数据(...每个使用者都可能发起共享,也可能接受共享,无论用户一个共享关系是什么角色,数据保存逻辑是不变。...因此实际使用,同步速度比单纯同步本地数据库要慢。 由于网络共享库是网络私有库数据投影,因此两个数据使用数据模型是完全一致。因此代码实现上,基本上就是采用简单Copy完成。...对应CKRecord都保存在本地数据库文件使用共享数据功能情况下,本地还会保存对应自定义区域以及所有的CKShare信息。...已知问题 1.共享,如设置成任何人可接收,参与者将无法获取到共享前托管对象关系数据,且只有共享托管对象修改后(或添加关系数据后)才会在参与者应用程序显示。

1.3K20

基于运行上下文APP软件架构设计

Web是无状态,AGridVO数据无法简单直接地传递给另一个界面BGrid,需要先保存数据库,BGrid再从数据读取,而且多出来字段对于BGrid也是无价值,没必要从数据读取出来。...而数据库读操作是支持并行处理,所以理论上是可以运行多个线程进行并行查询操作(不过IOS,我们使用CoreData技术来操作SQLite数据库,还没来得及做此类尝试)。...M项目中,因为使用CoreData技术,对于数据库操作,我们有用到一个叫NSManagedObjectContext数据操作上下文对象,基于此对象,我们可以很方便地实现表数据增删查改操作,不过因为涉及多个线程同时对同一表数据操作...数据初始化: 系统启动A执行查询操作,从本地数据获取当前登录用户最近联系人列表、好友列表、群聊列表,获取完成后再回调主线程,通知界面进行更新。...,将RoomName保存数据,待保存成功后,利用NSManagedObjectContextDidSaveNotification将更新结果合并到ReadThreadAManagedObjectContext

39030
领券