首页
学习
活动
专区
工具
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.9K20

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

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

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

    实时切换 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.2K10

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

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

    36920

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

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

    3.3K20

    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.2K80

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

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

    51000

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

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

    1.8K30

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

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

    13.2K30

    iOS面试题梳理(二)

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

    1.2K101

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

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

    73230

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

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

    1K20

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

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

    3.3K20

    KVO编程指南

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

    88420

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

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

    1.5K20

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

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

    1.9K10

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

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

    72550

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

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

    1.8K60

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

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

    2.7K11
    领券