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

Ask Apple 2022 中与 Core Data 有关的问答

很遗憾, Core Data 并没有提供直接返回这些文件 URL 的 API( 将 BLOB 转换成以某种 URL 访问的方式 ),因此,需要将数据以 URL 的方式进行传递时,就需要先将数据写到临时目录才能进行... CKContainer 已经创建了对应的 Schema ,应该在你的代码中删除注释掉该行代码。...通常这可以正常工作,但是一旦存储需要迁移( 我们进行轻量级迁移 ),就会出现某种竞争状况,导致应用程序小组件进程发生崩溃。在一次崩溃之后,迁移似乎可以正常工作,并且没有发生再次崩溃。...你的特定应用程序的写入速率可能需要不同的时间窗口,但是使用 NSPersistentCloudKitContainer 清除历史记录时,可能会强制将存储文件数据全面同步到 CloudKit,因此不建议经常这样做...A:@FetchRequest 的谓词属性是一个 Binding,它会在更改时重绘视图。从 Swift 3.0 开始,FetchRequest 支持在视图中动态修改它的谓词和排序描述。

2.8K20

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

该方法的 Persistent History 部分有助于确保你不会大量重复地从数据库中获取数据,并且仅在你需要的数据发生改时才刷新。又是一个有关持久化历史跟踪的问题。...我也不确定 Category/Extension 的作用以及如何在它和 Class 之间进行选择?A:大多数人会使用 Class,并在他们自己的托管对象扩展中添加他们需要的任何自定义方法。...我的数据模型中有一个 Int16 类型的 userOrder 属性,在表视图的行被重新排序,有什么好的方法来保存数据的新顺序?...为了管理有序的关系,Core Data 在 UInt16 空间中计算一个对象的索引,正好在前一个和一个对象的中间。整数空间用完时,将在任何一个方向上跨出一个对象,并均匀地重新分配这些对象。...NSManagedObject 符合 ObservableObject 协议,这意味着它的属性值发生变化时将会通过 Publisher 通知订阅者。

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

实时切换 Core Data 的云同步状态

、数据更新频率等 )将转换的数据上传到 iCloud 上。...数据权限模块在开启 NSPersistentCloudKitContainer 的同步共享数据库公共数据库功能,为了提高数据操作权限的验证效率,该模块会将共享公共数据库在 iCloud 上对应的原始数据...之所以仅在 App group 成员间使用 Persistent History Tracking 可以删除 Transaction 记录,那是因为每个成员都会在合并数据更新其对应的时间戳。...对于采用了 NSPersistentCloudKitContainer 进行数据同步的应用,使用者在设备上退出 iCloud 账户、切换账户或者关闭应用的 iCloud 同步功能,NSPersistentCloudKitContainer...会在重启( 在应用运行中进行如上操作,iOS 应用会自动重启 )对所有的与账户关联的数据在设备上进行清除( 并不会清除云端的数据,账户恢复开启同步功能仍可同步回本地 )。

1.5K20

何在Xcode下预览含有Core Data元素的SwiftUI视图

预览模拟器不支持控制台输出显示、不支持断点调试,即使在动态预览模式下(支持交互的预览模式),我们也不会在Xcode中获得任何代码中的控制台输出内容。因此在预览发生问题时,用于排查故障的手段很有限。...如果你的预览已经不好用了,且无法通过例如文件修改时间等手段判断对应目录,删除掉全部的目录也未尝不可。...因此,通常不推荐在视图中直接获取操作Core Data数据(非常简单的应用除外)。...App执行出错,所有的视图都不能正常预览。...在完成了各种处理CoreData数据的方法,通常会创建一些非常简陋的视图Unit Test来验证代码以及创建测试数据集。这样在进行UI开发的时候,我已经可以有一个可用来演示的数据库文件了。

5.1K10

如何通过 Persistent History Tracking 观察 SwiftData 的数据变化

本文将介绍如何在 SwiftData 中通过持久化历史跟踪观察特定数据变化的方法。...为什么要自行响应持久化历史跟踪事务 SwiftData 中集成了对持久化历史跟踪的支持,使视图能够及时正确地响应数据变化,这对于来自网络、其他应用小组件对数据的修改很有帮助。...对特定数据变化执行操作数据变化时,开发者可能需要执行额外逻辑操作,自行响应可以仅针对变化的数据执行,从而降低操作成本。...获取新产生的持久化历史跟踪事务:在接收到持久化历史跟踪通知,可以根据上一次获取事务的时间戳,从持久化历史跟踪存储中获取新产生的事务。通常,只需要获取非当前数据操作者(应用、小组件)产生的事务。...更新最后获取时间戳:在处理完事务,将本次获取的最新事务的时间戳设置为最后获取时间戳,以便下次获取时只获取新的事务。

30620

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

在删除数据,即使 item 的内容发生了变化,也并不会引发该行声明语句( Text )刷新,从而不会出现强制解包失败的情况。...在上节的演示中,数据被删除( 通过 onAppear 闭包中的延迟操作 ),NavigationView 会自动返回到根视图中。在这种情况下,持有该数据的视图将伴随着数据删除一并消失。...此时,数据被删除,应用并不会自动退回至根视图。另外,在其他的一些操作中,为了保证模态视图的稳定,我们通常也会将模态视图挂载到 List 的外面。例如:@State var item: Item?... timestamp 为 nil 时,将显示当前时间 Text("\((item.timestamp ??...任何可能脱离视图的传递过程都应使用托管对象实例对应的值类型版本。在更改数据时进行二次确认为了避免对主线程造成过多的影响,我们通常会在私有上下文中进行会对数据产生变化的操作

3.3K20

RecyclerView面试宝典:7大高频问题解析,面试必备!

ViewCacheExtension 作用:是一个可选的缓存层,允许开发者自定义缓存策略,存储更多的或者特定类型的ViewHolders。...数据发生变更时,LayoutManager决定哪些视图需要被重新布局,哪些可以保持不变。...视图更新:ViewHolder绑定了新数据,RecyclerView利用ItemAnimator来处理这些变更的动画效果,淡入淡出滑动效果,最终呈现给用户。...这允许RecyclerView在处理数据集更改时做出智能的决策,局部刷新而非全量刷新。...改善动画效果:在数据集发生变化时(添加、移除、移动等),如果开启了稳定ID,RecyclerView可以准确地识别和定位变化的项,从而产生平滑的动画效果。

18200

iOS 9人机界面指南(四):UI元素(下)- 腾讯ISUX

活动指示器: 任务进行和加载时旋转,任务完成自动消失 不支持用户交互行为 在工具栏视图中使用活动指示器来告知用户任务加载正在进行中,但并不提示该过程何时会结束。 不要使用静止的活动指示器。...详情展开按钮以一个单独的视图展示特定项目的更多详情信息与功能。 详情展开按钮在表格行中出现时,点击表格行的其它区域不会激活此按钮,只会选中该行,或者触发app中其它自定义的行为。...告知用户有多少打开的视图的需求比帮助用户选择特定视图更重要时,使用页面控件。...文本框里没有任何其它提示文字时,会展示占位符文本(placeholder text),名字、地址等。 根据输入内容的类型来指定不同的键盘类型。...单字标题,例如:错误,警告,几乎不能提供任何有用信息。 如果可以的话,使用句子片段而非完整的句子。一个简洁清晰的状态描述往往比一个完整的句子容易理解。

13.2K30

iOS开发之表视图爱上CoreData

TableView之所以会爱上CoreData,是因为我们的CoreData会简化我们对数据的操作,并且会持久化到sqlite中。...相爱的过程啦,如何在storyboard中对TableView的cell进行配置在这儿就不赘述了,下面给出我们要通过TableView和CoreData来实现什么功能。     ...来修改着添加数据时,TableView上的内容是不跟着CoreData的变化而变化的,接下来要做的就是要绑定TableView和CoreData的关系。...因为CoreData和TableView已经进行了同步,所以删除TableView会自动更新,删除代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18...更新部分的代码和添加部分的代码差不多,在这就不往上贴啦。   经过上面的艰苦的历程我们的tableView就会深深的爱上CoreData, 可能上面的内容有些多,有疑问的可以留言交流。

2.1K80

iOS面试题梳理(二)

键值编码(KVC): 1.键值编码是一种间接访问对象的属性使用字符串来标识属性,而不是通过调用存取方法,直接通过实例变量访问的机制,非对象类型的变量将被自动封装或者解封成对象,很多情况下会简化程序代码...2.改变传递控制链。允许一个类在某些特定时刻通知到其他类,而不需要获取到那些类的指针。可以减少框架复杂度。 3.另外一点,代理可以理解为java中的回调监听机制的一种类似。...6.CoreData :通过管理对象进行增、删、查、改操作的。它不是一个数据库,不仅可以使用SQLite数据库来保持数据,也可以使用其他的方式来存储数据。:XML。...提供的是对象-关系映射功能,也就是说,CoreData可以将Objective-C对象转换成数据,保存到SQL中,然后将保存的数据还原成OC对象。...2.NSManageObjectContext:管理对象上下文,持久性存储模型对象,参与数据对象进行各种操作的全过程,并监测数据对象的变化,以提供对undo/redo的支持及更新绑定到数据的UI。

1.2K101

UI自动化 --- UI Automation 基础详解

这些UI自动化客户端跟踪由UI自动化提供程序触发的事件,UI中发生某些情况时,它们使用这些信息通知终端用户。...通过允许提供程序应用程序有选择地触发事件,根据是否有客户端订阅这些事件,或者如果没有客户端监听任何事件,则可以完全不触发事件,从而提高效率。 UI 自动化事件有以下类型。...详细内容请阅读微软官方文档。 事件 说明 属性更改 UI 自动化元素上的某个属性控件模式更改时引发。...元素操作 来自最终用户编程活动的 UI 结果出现更改时引发;例如,单击通过 InvokePattern 调用一个按钮。 结构更改 在 UI 自动化树的结构更改时引发。...桌面上有新 UI 项变得可见、隐藏删除时,结果便发生更改。 全局桌面更改 与客户端相关的的全局操作发生时引发,例如焦点从一个元素转换到另一个元素、窗口关闭时。

1.3K20

何在 Core Data 中进行批量操作

事实上,在相当长的时间中,Core Data 的竞品总是喜欢通过各种图表来展现它们在数据操作性能上对 Core Data 的碾压之势。...如果想在批量操作在同一段代码中将数据变化合并到视图上下文,需要将结果类型设置为 resultTypeObjectIDs 如果多个持久化存储均包含同一个实体模型,那么可以通过 affectedStores...下文中会详细说明 将变化合并到视图上下文 由于批量操作是直接在持久化存储上完成的,因此必须通过某种方式将变化的数据合并到视图上下文中,才能将变化在 UI 上体现出来。...对所有发生变动的 item 进行验证 ( 调用 Item 的 validateForUpdate 方法中的自定义验证代码以及模型编辑器中定义的验证条件 ),验证失败则抛出错误 调用所有需要更新的托管对象...SQLite 中保存数据的[7] ) 在 SQLite 完成更新,持久化存储会更新它的行缓存,将数据以及数据版本更新到当前状态 调用所有更新的 item 实例的 didSave() 方法 抹除更新

1.8K30

命令和查询责任隔离(CQRS)模式

数据的读和写表示形式之间常常存在不匹配,比如必须正确更新的附加列属性,尽管它们不是操作的一部分。 对同一组数据并行执行操作时,可能会发生数据争用。...物化视图实际上是数据的持久只读缓存。 使用CQRS与事件源模式结合使用时,请考虑以下因素: 与任何读写存储独立的系统一样,基于此模式的系统最终只能保持一致。...然而,事件源可以使对域建模变得容易,并使重构视图创建新视图变得容易,因为数据中更改的意图得到了保留。...通过对特定实体实体集合的事件进行重播和处理,为数据的读取模型投影生成物化视图可能需要大量的处理时间和资源使用。如果需要长时间对值进行求和分析,尤其如此,因为可能需要检查所有相关的事件。...解决这个问题的方法是按预定的时间间隔实现数据快照,例如已发生特定操作的总数实体的当前状态。 举例 下面的代码显示了CQRS实现示例的一些摘录,该实现对读和写模型使用了不同的定义。

97220

Core Data with CloudKit(四)—— 调试、测试、迁移及其他

应用程序端服务器端任何数据发生变动都会出现对应的信息。...但如果你的应用程序已经上线,应尽量避免此类问题的发生可能。请考虑后文中的更新数据模型提供的模型迁移策略。...在实际使用中,导入状态结束,会切换到其他的状态。利用类似如下的代码,尝试给用户提供一点提示。...因此数据较多时,需做好用户的提示工作(比如保持在前台,让用户继续等待)。 创建默认数据集 有的应用程序会为用户提供一些默认的数据,比如说起始数据集,或者演示数据集。...可以考虑以下的模型更新策略: 增量更新 以增量的方式添加记录类型向现有记录类型添加新字段。 采用这种方式,旧版本的应用程序仍可以访问用户创建的记录,但不是每个字段。

66030

MySQL 8 复制(七)——组复制理论基础

内置的组成员服务可以在任何给定的时间点保持组的视图一致并可供所有服务器使用。服务器加入离开组时,视图也会相应更新服务器宕机,故障检测机制会检测到此情况并通知组其视图已更改。...服务器A在给定时间内没有从服务器B接收到消息时,发生超时并引发怀疑。然后如果组同意怀疑是真的,那么该组决定给定服务器确实宕机了。...如果不这样做,可能会因操作中断部分完成,导致数据不一致。如果组以单主模式部署,则不会发生此问题,因为所有更改都是通过同一服务器(主服务器)执行的。 5....视图对应于主动参与当前配置的一组成员,在特定时间点,这些组成员在系统中是正确的和在线的。视图更改发生在组配置修改(例如成员加入离开)时。...任何组成员身份更改都会导致在同一逻辑时间点向所有成员传达视图更改。视图标识符唯一标识视图。只要视图发生更改,就会生成一个视图标识符。

1.8K10

MySQL 8 复制(七)——组复制基本原理

内置的组成员服务可以在任何给定的时间点保持组的视图一致并可供所有服务器使用。服务器加入离开组时,视图也会相应更新服务器宕机,故障检测机制会检测到此情况并通知组其视图已更改。...组成员服务跟踪服务器故障,该服务依赖于分布式故障检测器,能够在任何服务器脱离组时发出信号,无论是意外停止还是主动停止。分布式恢复过程确保服务器加入组时能自动更新。...服务器A在给定时间内没有从服务器B接收到消息时,发生超时并引发怀疑。然后如果组同意怀疑是真的,那么该组决定给定服务器确实宕机了。...视图对应于主动参与当前配置的一组成员,在特定时间点,这些组成员在系统中是正确的和在线的。视图更改发生在组配置修改(例如成员加入离开)时。...任何组成员身份更改都会导致在同一逻辑时间点向所有成员传达视图更改。视图标识符唯一标识视图。只要视图发生更改,就会生成一个视图标识符。

1.3K20

KVO编程指南

苹果官方文档Key-Value Observing Programming Guide 一、简介 KVO键值观察是一种对象指定属性更改时,可以通知其他对象的机制 这对于应用程序中的model层和controller...更好的方法是使用KVO,类似于发生改时Person接收一个通知。 要使用KVO,首先必须确保所观察的对象(本例中的Account)符合KVO标准。...在任何情况下,观察者都应该总是调用父类的observeValueForKeyPath:ofObject:change:context的实现:它不能识别上下文时(或者简单情况下,任何关键路径),因为这意味着父类已经注册了...手动更改通知提供了执行此操作的方法。 手动和自动通知不是相互排斥的。除了已有的自动通知外,您还可以自由发布手动通知。典型的是,你可能想完全控制一个特定属性的通知。...属性发生改时通知,因为它们会影响属性的值。

85420

【IOS开发高级系列】CoreData专题

NSManagedObjectContext 的 executeFetchRequest:error: 方法传入一个NSFetchRequest ,然后请求会被发送到 NSPersistentStore ,然后执行一段时间返回一个数组...Batch Updates         在CoreData中想要更新大量数据,我们往往要将大量修改的NSManagedObject 加载到 NSManagedObjectContext 中并保存,...你可能会采取批处理的方式,即一小批一小批的更新NSManagedObject并保存到 NSManagedObjectContext 中,但这样会花费很多时间,用户体验较差。         ...,通过 propertiesToUpdate 属性来描述字段更新,它是一个字段,key为 NSPropertyDescription 属性名字符串,value为 NSExpression 常量。         ...除了上面提到的这些,还要注意Batch Updates对数据库的操作是乐观锁,也就是假定很少会发生同时存取同一块数据的情况,所以你需要制定一个合理的”merge”策略来应付因同时更新数据产生的冲突。

45450

Spread for Windows Forms高级主题(8)---通过暂停布局提高性能

布局对象 布局是一个对象,它保存了计算的值(像单元格的宽度和高度,合并,以及视图),用来绘制控件的当前状态。...暂停布局逻辑 为了改善性能,你可以暂停布局,这样可以暂停布局对象的更新,因此控件不会在重画的计算上花费时间,直到恢复布局。...两个方法可以完成这些操作,FpSpread类中的SuspendLayout 和ResumeLayout方法。一定要在一个特定操作的范围内同时使用这两个方法,否则暂停布局就会出现问题,不能恢复。...对表单进行修改时,SuspendLayout 方法能够阻止控件重新计算列、行和单元格的布局。...你还可以做一些其他的操作提高性能,减小控件的大小,减少一次性显示的列数和行数(布局对象只计算表单的可见部分),实现你自己的表单模型对象(就像实现了ISheetDataModel接口的数据模型对象)

1.7K60

MySQL 给你问懵了?50 道 MySQL 高频面试题详解来了

MyISAM Static 在受损情况下容易恢复。 8、如果一个表有一列定义为 TIMESTAMP,将发生什么? 每当行被更改时时间戳字段将获取当前时间戳。...%对应于 0 个更多字符,_只是 LIKE 语句中的一个字符。 如何在 Unix 和 MySQL 时间戳之间进行转换?...或者这样理解: 事务就是被绑定在一起作为一个逻辑工作单元的 SQL 语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。...基本锁类型:锁包括行级锁和表级锁 42、什么叫视图?游标是什么? 视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作视图通常是有一个表或者多个表的行列的子集。...对视图的修改不影响基本表。它使得我们获取数据容易,相比多表查询。 游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行多行。

2.6K11
领券