欢迎大家在 Discord 频道2 中进行更多地交流在 WWDC 2019 上,苹果推出了 Core Data with CloudKit API ,极大地降低了 Core Data 数据的云同步门槛。...如果你对 Core Data with CloudKit 尚不了解,请阅读我写的 有关 Core Data with CloudKit 的系列文章3非实时切换所谓非实时切换是指:对 Core Data...( 在 Data Model Editor 中通过 Configuration 创建 ) 中的持久化存储与某个 CloudKit container 关联起来。...,然后将数据转换成 CloudKit 对应的格式,并保存在 SQLite 上的特定表中( ANSCKEXPORT......,NSPersistentCloudKitContainer 将无法获知在关闭期间本地数据发生的变化,从而会造成本地和云端数据的永久不同步。
这种方法可以减少同步的下载数据量( 节省设备存储容量 )并允许按需下载。这是 Core Data with CloudKit 与纯 CloudKit API 相结合的一种方式。...理论上,可以同步的数量和尺寸只上取决于用户的 iCloud 可用容量。...严格意义上,我们很难仅通过切换通知来判断当前同步的实际状态。更多内容请参阅 Core Data with CloudKit(四)—— 调试、测试、迁移及其他[7] 。...如果 Widget 遇到需要迁移的 CoreData Store,则 Widget 应重定向以启动应用程序。实际上,小部件永远不会从操作系统获得足够的资源来完成迁移。...如果我们不再关心本地数据,是否可以从与 CloudKit 同步的数据模型中删除未使用的实体?
严格意义上,我们很难仅通过切换通知来判断当前同步的实际状态。 在实际的使用中,对用户感知影响最大的是数据导入状态。...当用户在新设备上安装了应用程序,并且已经在网络上保存有较多数据时,面对完全没有数据的应用程序用户会感到很茫然。...如果提供的数据集是放置在可同步的数据库中时需要谨慎处理。比如,已经在一台设备上创建了默认数据集并进行了修改,当在新设备上再次安装并运行应用程序时,处理不当可能导致数据被异常覆盖,或者重复。...仪表台[6]一文,我们已经探讨过CloudKit的两种环境设置。...增加version属性 这个策略是上一个策略的加强版。通过一开始在实体上添加version属性,对实体进行版本控制,通过谓词仅提取与应用程序当前版本兼容的记录。旧版本程序将不会提取新版本创建的数据。
使用@FetchRequest或NSFetchedResultsController的视图可以将数据变化及时反应在UI上。...至此,我们已经完成了一个支持Core Data with CloudKit的项目了。 运行 在模拟器上或实机上设置并登录相同的iCloud账户,只有同一个账户才能访问同一个iCloud私有数据库。...CoreData: error: CoreData+CloudKit: -[NSCloudKitMirroringDelegate recoverFromPartialError:forStore:inMonitor...数据会被同步到iCloud上。...* 以上方案需要使用Persistent History Tracking,更多资料可以查看我的另一篇文章【在CoreData中使用持久化历史跟踪】[4]。
Core Data with CloudKit (一) —— 基础 这是系列文章的第一篇,该Core Data with CloudKit系列主要介绍了如何使用CoreData同步CloudKit的三种数据库类型...另外,在模拟器上的运行效果也远没有在真机上可靠。 Core Data with CloudKit的优点 •几乎免费开发者基本上不需要为网络服务再额外支付费用。...•Entities vs Record Types尽管我们通常会强调Core Data不是数据库,但实体(Enitities)与数据库中的表非常相似。我们在实体中描述对象,包括其名称、属性和关系。...在任何给定的上下文中,托管对象最多有一个实例对应于持久存储中的给定记录。在CloudKit上,每条记录被称作为CKRecord。...检查该操作是否导致私有数据库的com.apple.coredata.cloudkit.zone中的数据发生变化3.对所有创建CKDatabaseSubscription订阅的设备(同一iCloud账户)
-com.apple.CoreData.CloudKitDebug 1 更多有关调试参数的内容,请参阅 Core Data with CloudKit(四)—— 调试、测试、迁移及其他[4] 通过断点查找...在创建新的实体数据时,Core Data 将从 Z_PRIMARYKEY 表中找到对应实体最后使用的 Z_PK 值( Z_MAX ),在此值基础上加一,作为新记录的 Z_PK 值,并更新该实体对应的 Z_MAX...因此在 Core Data 定义数据模型时,开发者无须为实体特别定义主键属性(事实上也无法创建自增主键)。...Core Data 将创建更多的表来处理与 CloudKit 的同步事宜。考虑到表的复杂性和篇幅,就不继续展开了。不过有了上文的基础,了解它们的用途也并非很困难。...、导入操作日志、待导出数据、Core Data 关系与 CloudKit 关系对照表、本地数据对应的 CKRecordName、本地数据的 CKRecord 完整镜像( 共享公共数据库 )等等信息。
####Hipo 2.0核心功能实现 Hipo数据方面,本地CoreData存储,使用增量同步策略。...本地选择CoreData纯粹是因为不太喜欢sql的方式,而且想靠近点Apple官方推荐方式,以便后期能够不太费力的使用Apple提供的新东西。...至于具体CoreData操作还是借助了MagicalRecord,在此推荐。...Hipo 1.x中数据存储在Sqlite中,为了迁移到CoreData,之前选了个Swift的Sql库,但是Swift升级到2之后,发现几个有名的Swift Sql库都没能第一时间升级到Swift 2,...之后的Demo测试发现CloudKit似乎比外界认为的要好,在此占个坑,后续打算写写CloudKit的文章,安利安利CloudKit。
它位于 Core Data Stack 的顶部,在应用程序与 Core Data Stack 之间承担着主要的交互职责。 应用程序通常至少需要创建一个运行于主线程的托管对象上下文实例。...如上图所示,一个持久化存储协调器只对应一个托管对象模型,但可以与多个托管对象上下文和多个持久化存储配合使用。...NSPersistentCloudContainer 是 NSPersistentContainer 的子类,它在简化传统 Core Data Stack 创建的基础上,提供了对于 CloudKit 网络数据库的支持...CoreData with CoreSpotlight 在 WWDC 2021 上,苹果推出了新版的 NSCoreDataCoreSpotlightDelegate API。.../tags/cloudkit/ [3] 数据共享的例程: https://developer.apple.com/documentation/coredata/synchronizing_a_local_store_to_the_cloud
SwiftUI 如果说从 SwiftUI 1.0 到 4.0 每年的升级是一种小修小补的行为,那么今年苹果在 SwiftUI 5.0 上做出的努力至少算得上是中期改款了。...,直接定位到滚动视图的特定位置,只能使用一次 )、全新的滚动条控制( 闪烁 )、可自定义行视图在滚动区域的顶端和显示区域的显示状态( 例如可用其实现类似 watchOS 中的滚动到顶端子视图缩小的视觉效果...SwiftData 本质上就是一套官方推出的,基于 Swift 5.9 新功能实现的 Core Data 的 Swift 封装库。...com.apple.CoreData.ConcurrencyDebug 1 后,即使在新的 Context 中使用 transaction 尝试保持线程一致,仍会强制报错(即使是在一个新创建的 actor...然而,Core Data with CloudKit API 在客户端方面没有任何调整,很令人失望。
上创建需要的索引(不包含recordName)。...在获取令牌后,开发者还可以通过使用 CloudKit JS [6]或 CloudKit Web 服务[7]与数据进行交互。...通过设定范围,仅显示与你相关的数据,帮助你更好地了解应用程序的流量配置及使用趋势。...在提供详尽信息的基础上,CloudKit尽可能地保持用户数据的隐秘性。日志显示每个用户记录的服务器事件,但不暴露任何个人身份信息。仅显示匿名的、特定于容器的CloudKit用户。...AppStoreConnect的分析信息仅来自已同意与 App 开发者共享诊断和使用信息的用户,CloudKit日志信息则来自于你的应用程序中所有使用了CloudKit服务的用户。
,直接定位到滚动视图的特定位置,只能使用一次 )、全新的滚动条控制( 闪烁 )、可自定义行视图在滚动区域的顶端和显示区域的显示状态( 例如可用其实现类似 watchOS 中的滚动到顶端子视图缩小的视觉效果...SwiftData 本质上就是一套官方推出的,基于 Swift 5.9 新功能实现的 Core Data 的 Swift 封装库。...com.apple.CoreData.ConcurrencyDebug 1 后,即使在新的 Context 中使用 transaction 尝试保持线程一致,仍会强制报错(即使是在一个新创建的 actor...中进行) 同样受到 CloudKit 同步的限制,演示中的 Attribute(.unique) 并不适用于同步场景 目前功能比 Core Data 少,没有新的增加 PersistentModel...然而,Core Data with CloudKit API 在客户端方面没有任何调整,很令人失望。
execution time: 0.0002s for count of 190. 190 */ 上文代码中的注释部分,为 Core Data 语句对应的 SQL 命令(使用 -com.apple.CoreData.SQLDebug...具体的设置方法,请参阅 Core Data with CloudKit(四)—— 调试、测试、迁移及其他[2] 二、使用托管对象上下文的 count 方法查询 count 数据 方法一的便捷版本。...0 // 统计关系的数量,将导致本条记录被填充 print(firstItemTagsCount) /* CoreData: sql: SELECT 0, t0.Z_PK, t0.Z_OPT, t0....复杂的逻辑将对数据更改的效率产生一定的影响。 为已经上线使用的 CoreData 数据库添加派生属性或 willSave 方法时,需通过 mapping 或迁移代码处理原有数据的新增属性。...引用链接 [1] www.fatbobman.com: http://www.fatbobman.com [2] Core Data with CloudKit(四)—— 调试、测试、迁移及其他: https
A:NSPersistentContainer 可以满足你的需求,你可以使用 viewContext 来驱动与用户交互的 UI,同时通过 newBackgroundContext 方法创建私有上下文,并在其上完成数据的保存...通过 CloudKit Dashboard 删除数据Q:一个与 Core Data 与 CloudKit 同步的问题。...我注意到,当我使用 Safari 客户端从 CloudKit 数据库中删除一条记录时( 通过 CloudKit Dashboard ),该对象仍会保留在设备上的 Core Data 数据存储中。...这是有意为之的吗?如何在 CloudKit 管理器与设备之间同步这些更改?谢谢!A:尚不清楚此工作流程是否会向 NSPersistentCloudKitContainer 生成推送通知。...另外可以考虑使用 CloudKit API 查询云端的数据条数,然后与已经同步到本地的记录数进行比对,获得大致的同步进度( 此方式仅适用于数据模型简单,关系不太复杂的情况 )。
Core Data with CloudKit (六) —— 创建与多个iCloud用户共享数据的应用 如想获得更好的阅读体验,可以访问我的博客www.fatbobman.com 本文中,我们将探讨如何使用...Core Data with CloudKit创建与多个iCloud用户共享数据的应用。...当所有者创建了一个共享关系后,系统将自动为其在私有数据库中创建一个新的自定义区域(com.apple.coredata.cloudkit.share.xxx-xx-xx-xx-xxx),并将共享的数据(...包括其关系数据)从私有数据库中的com.apple.coredata.cloudkit.zone移动到新建的Zone中。...网络端和本地端数据保存逻辑如下: 共享数据库示意图.drawio-2 与同步公共数据库一样,Core Data with CloudKit为了缩短通过网络查询CloudKit数据时间,将NSManagedObject
事实上,在相当长的时间中,Core Data 的竞品总是喜欢通过各种图表来展现它们在数据操作性能上对 Core Data 的碾压之势。...但由于每次都需要实例化一个托管对象,理论上性能较方法 2 稍慢。...持久化存储对请求中的数据与持久化存储行缓存中的数据进行冲突检测。...通知中包含了本次更新的对象集合 或许上面的步骤已经让你有点头痛,但事实上我们还是省略了相当多的细节。...Core Data with CloudKit 功能冲突,了解哪些属性或功能无法在 Core Data with CloudKit 下开启,请参阅 Core Data with CloudKit(二)
1 前言 在开发过程中经常碰到服务器上内容和客户端上内容不同步的问题.这是什么情况?请看下文。...2 服务器版本更新与客户端不同步的问题 http状态304表示请求的是缓存,200表示是从服务器请求的。...3张不同的照片,第一次访问,总共请求了4次, 的image1照片,明显都是存在了本地缓存中 ">加上时间戳目的是为了解决项目更新代码不同步的问题。同理CSS,JS也应该加入时间戳,下次再修改代码的时候避免因为缓存原因没有同步。
下面是官方文档对它的一个概述: CallKit允许您将您的呼叫服务与系统上其他与呼叫相关的应用程序集成在一起。CallKit提供调用接口,您可以使用VoIP服务处理后端通信。...,可以把iPhone上的地图、音乐、电话等功能映射到车载屏幕上使用。...官方文档 16、CloudKit 这个框架我们首先能联想到肯定是 iCloud了,的确这个框架也是专门用来给它服务的,每当我们看到一个新框架的时候我们脑袋里想的肯定是这框架是用来干什么的,具体我们该怎样使用它...iOS CloudKit的使用 这篇文章也就了两个问题,它是什么,它是用来干嘛的。 17、Combine Combine是Apple在2019年WWDC上推出的一个新框架。...蓝牙 iOS中的蓝牙 CoreBluetooth蓝牙系列 官方文档 21、CoreData 这个我就一句话带过,他就苹果提供的数据库,CoreData我以前也有写过关于它的文章,有需要的也可以往前面翻翻
,肩负正义使命的绝地武士与帝国邪恶黑暗势力作战的故事。"...,肩负正义使命的绝地武士与帝国邪恶黑暗势力作战的故事。"...如想了解更多有关持久化历史跟踪信息,请阅读在CoreData中使用持久化历史跟踪[3]。 停止、删除索引 如果想重建索引,应该首先停止索引,然后再删除索引。...我个人不太喜欢这种将处理NSUserActivity的逻辑嵌入视图代码的做法,如果想在UIWindowSceneDelegate中处理NSUserActivity,请参阅Core Data with CloudKit...(六) —— 创建与多个iCloud用户共享数据的应用[4]中关于UIWindowSceneDelegate的用法。
推流平台EasyDSS里有个直播的类型叫虚拟直播,虚拟直播的直播源有两种类型,一个是点播资源,一个是在线资源。点播资源可以从EasyDSS的点播服务去配置,在线资源必须是直播的源地址。...接入多路虚拟直播时,会概率性出现直播状态不正确的情况,包含虚拟直播的状态和虚拟直播的流量统计问题,并且长时间(单路虚拟直播,多个客户端拉流),会出现服务端崩溃问题。...于是进一步排查发现,由于系统在轮询时,不做判定和现场环境原因,导致虚拟直播状态不同步,经常性中断,也因此导致不断重连致使服务器崩溃。...EasyDSS互联网视频云服务的虚拟直播功能,支持任意网络源信号接入,支持多路信号输入;支持HTTP,RTMP,RTSP等主流协议,支持MP4、MKV、FLV等常见音视频格式。...目前我们也在开发一些智能分析相关的视频服务,如果大家有兴趣可以关注我们的博客,我们将不定期在博客内分享我们的开发经验、疑难解决与解决方案。
一、CloudKit简介 CloudKit,是苹果推出的基于iCloud的一个云端数据存储服务,提供了低成本的云存储并能作为一个后端服务通过用户们的iCloud账号分享其应用数据。...CloudKit也具有安全性,为用户的私人数据提供了完整的保护。而开发者不仅只能接入自己的数据库,也不允许查看用户的私有数据。...CloudKit适用于那些在服务端计算量不大,却需要使用大量数据的iOS平台独占应用。 二、分类 CloudKit 的基础对象类型有 7 种。...(事实上,经过开发者授权配置 CloudKit Dashboard 之后,一个应用也可以访问其他应用的 container。)...还是以地理位置签到应用为例,每个地理位置可以包含很多用户在该位置的签到,那么位置与签到之间就形成了这样一种包含式的从属关系。 CKAsset: 即资源文件,例如二进制文件。
领取专属 10元无门槛券
手把手带您无忧上云