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

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

就像WWDC session Build apps that share data through CloudKit and Core Data[2]提到那样,共享数据功能实现远复杂于同步私有数据库以及同步公共数据库...所有者在自己私有数据库中创建一个新自定义区域,为该区域创建CKShare。参与者将共享该区域中所有的数据。...在之前同步私有数据库中我们介绍过,私有数据库自定义区域可以创建CKDatabaseSubscription,参与者正式通过该订阅来及时获取到共享数据变化。...所有者对数据都操作都是在自己网络私有数据库自定义区域中进行,而参与者则是在自己网络共享数据库对应自定义区域中进行。...网络端和本地端数据保存逻辑如下: 共享数据库示意图.drawio-2 同步公共数据库一样,Core Data with CloudKit为了缩短通过网络查询CloudKit数据时间,将NSManagedObject

1.3K20

Core Data with CloudKit(五)——同步公共数据库

不可以在公共数据库中添加自定义Zone,所有的数据都保存在默认区域中。无论用户是否有iCloud账户,都可以通过应用程序或CloudKit Web服务访问其中数据。...私有数据库数据CloudKit仪表台中是不可见,对开发者是完全保密。 开发者可以在私有数据库中创建自定义区域,便于组织管理数据。 私有数据库数据容量计入用户iCloud存储配额。...例如你将某条数据共享给某个用户,该数据仍保存在你私有数据库中,但被共享者由于你授权可以在他共享数据库中看到该记录,且只能依据你设定权限进行操作。 共享数据库中不可以自定义区域。...由于本地数据和持久化存储是没有权限概念,开发者很可能编写出尽管没有网络端权限但仍在本地进行了错误操作代码。这在同步公共数据库同步共享数据库项目中是十分危险。...公共数据库适用场合 通过CloudKit调用公共数据库和通过Core Data with CloudKit同步公共数据库两者技术特点不同,考虑侧重点也不一样。

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

CloudKit实践

一、CloudKit简介 CloudKit,是苹果推出基于iCloud一个云端数据存储服务,提供了低成本云存储并能作为一个后端服务通过用户们iCloud账号分享其应用数据。...CloudKit也具有安全性,为用户私人数据提供了完整保护。而开发者不仅只能接入自己数据库,也不允许查看用户私有数据。...CloudKit适用于那些在服务端计算量不大,却需要使用大量数据iOS平台独占应用。 二、分类 CloudKit 基础对象类型有 7 种。...CKDatabase: Database 即数据库,私有数据库用来存储敏感信息,比如说用户性别年龄等,用户只能访问自己私有数据库。...应用也有一个公开数据库来存储公共信息,例如你在构建一个根据地理位置签到应用,那么地理位置信息就应该存储在公共数据库里以便所有用户都能访问到。 CKRecord: 即数据库一条数据记录。

1.6K10

Core Data with CloudKit (一) —— 基础

:私有数据库公共数据库、共享数据库。...2020年、2021年,苹果持续对Core Data with CloudKit进行了强化,在最初仅支持私有数据库同步基础上,添加了公有数据库同步以及共享数据库同步功能。...之所以说几乎免费,毕竟苹果会扣取15-30%app收益。•安全一方面苹果通过沙盒容器、数据库区隔、加密字段、鉴权等多种技术手段保证了用户数据安全。...该订阅只能用于私有数据库和共享数据库自定义CKRecordZone,并只会通知订阅创建者。在以后文章中,我们可以看到Core Data with CloudKit是如何在私有库中使用该订阅。...检查该操作是否导致私有数据库com.apple.coredata.cloudkit.zone中数据发生变化3.对所有创建CKDatabaseSubscription订阅设备(同一iCloud账户)

96230

Core Data with CloudKit(三)——CloudKit仪表台

我将在下篇文章详细讨论该如何对Core Data with CloudKit数据模型做版本迁移。 安全角色(Security Roles) 安全角色仅适用于公共数据库。...CloudKit使用基于角色访问控制(RBAC)来管理权限和控制对公共数据库数据访问(私有数据库对于应用程序用户是唯一)。...image-20210809104558352 image-20210809104402659 上图是我们在同步本地数据库到iCloud私有数据库[5]中模版项目Item在CloudKit对应Record...Zones 每个种类数据库都有默认Zone,只有私有数据库可以自定义Zone。...包括请求数量、错误数量、推送数量、服务器延迟以及平均请求大小等等。通过设定范围,仅显示你相关数据,帮助你更好地了解应用程序流量配置及使用趋势。

69920

苹果 iCloud “极端”架构:管理数十亿独立用户数据库

该模式概述了必要记录类型、字段和索引,以实现高效数据检索和查询。应用程序将其数据组织到 CloudKit区域”中,这允许对记录进行逻辑分组,以便客户端设备进行选择性同步。...此元数据通过特定于 CloudKit 系统字段来进行扩充,这些字段跟踪记录创建、修改时间以及存储记录区域区域名称以主键为前缀,以便能够有效地访问每个区域记录。...之前,在使用 Cassandra 时,CloudKit 曾经依赖一个特殊索引来跟踪每个区域更新,从而在设备之间同步数据。当设备需要更新其数据时,它会检查该索引以查看新内容。...然而,手动设置这些冲突范围可能很棘手,并可能导致难以识别的错误,尤其是当它们应用程序主要逻辑混合在一起时。...因此,建议构建在 FoundationDB 之上系统创建更高级别的工具,比如自定义索引,来处理这些模式。这种方法有助于避免将放宽冲突规则责任留给每个客户端应用程序,这可能会导致错误和不一致。

11510

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

Core Data with CloudKit(二)——同步本地数据库到iCloud私有数据库 本系列文章一共六篇。...如果不设置该属性,Core Data会默认使用NSErrorMergePolicy作为冲突解决策略(所有冲突都不处理,直接报错),这会导致iCloud数据无法正确合并到本地数据库。...下面的动图,是在一台实机(Airplay投屏)和一个模拟器上运行效果。 syncToPrivateDB 视频经过剪辑,数据同步时间通常为15-20秒左右。...创建可同步Model注意事项 要在Core Data和CloudKit数据库之间完美地传递记录,最好对双方数据结构类型有一定了解,具体请参阅Core Data with CloudKit (一)...总结 在本文中,我们探讨了如何实现将本地数据库同步到iCloud私有数据库。 下一篇文章让我们一起探讨如何使用CloudKit仪表台。从另一个角度认识Core Data with CloudKit

2K20

java微服务架构有哪些_漂浮服务区后端

它提供广泛客户端支持,主要企业数据库整合,还提供后端数据存储区、文件存储区、推送通知、移动分析、iBeacon支持以及在后端运行自定义代码功能。...云代码可以在驻留在处理钩子函数和自定义端点中。云代码在Kinvey中实现内部版本控制。 数据存储 Kinvey组合使用MongoDB,MongoDB提供了供应用程序使用无模式、非SQL数据库。...CloudKit让每款应用都获得一个存放数据库和记录容器,而这些记录可以被查询,同时应用也可以通过订阅来改变这些数据CloudKit还同时支持应用共享及公共数据库,方便开发者完成数据存储工作。... Parse 等提供子类化数据模型不一样,CloudKit 中所有存储数据只能是 CKRecord 类型,开发者需要使用一个名叫 Record Type 字符串来区分不同类型数据。...CKRecordZone —— CloudKit 还引入了 RecordZone 概念,来给不同数据进行分区, Mongodb 中 collection 比较相似。

7.4K20

Hipo 2.0 Swift重写,限时免费!限时免费!限时免费!

####iOS原生开发学习 在变成果粉同时,Apple推出了Swift语言,能够看得懂语法,满足了我尝鲜欲望,加之当时考虑实现Hipo数据云端保存,跨设备同步功能,索性决定使用swift重写Hipo...因此Hipo 2.0.0: 首页集合每月花销,预算/花费,新建类入口都在首页; 数据按照月为单位,一月一屏,历史展示年列表一页足以,相互很方便切换。 全新设计记账表单页面,自定义数字键盘。...####Hipo 2.0核心功能实现 Hipo数据方面,本地CoreData存储,使用增量同步策略。...在开始代码不久,才惊喜发现Apple Cloudkit能够仅靠客户端实现增量同步,免费额度很高,用户无需登录注册,相对而言开发者更加不用关心数据安全等,决定转而使用Cloudkit实现Hipo增量同步,...Hipo将用户数据存储到了用户自己iCloud账户下私有数据库,用户将数据完全隔离,即使我也没办法看到用户记账数据。 之前准备将同步做为2.0.0内购,后来听取建议,同步完全免费!同步完全免费!

2.4K20

WWDC 23 ,SwiftUI 5 和 SwiftData 初印象

如果你打算开发 iOS 17+ 应用,那么就应该马上抛弃 @ObservableObject 这样声明方式。 由于在同一个系统中存在了两种不同数据源声明逻辑,这也给初学者带来了更多困扰。...,直接定位到滚动视图特定位置,只能使用一次 )、全新滚动条控制( 闪烁 )、可自定义行视图在滚动区域顶端和显示区域显示状态( 例如可用其实现类似 watchOS 中滚动到顶端子视图缩小视觉效果...)、支持分页滚动( 开发者长期盼望 )、自定义滚动内容缩进、为滚动内容(非滚动容器)添加安全区域等众多功能。...这是我目前整理一些有关 SwiftData 问题和注意事项( 原文发表在推文中,没有进行更系统归纳): 尚不支持公共和共享数据同步 在当前版本中,通过其他上下文(ModelContext)创建数据并不会自动合并到视图上下文中...中进行) 同样受到 CloudKit 同步限制,演示中 Attribute(.unique) 并不适用于同步场景 目前功能比 Core Data 少,没有新增加 PersistentModel

1.1K20

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

•模型迁移错误正常情况下,Xcode不会让你生成同CloudKitSchema不兼容ManagedObjectModel,所以多数情况下,都是由于在开发环境下,本地数据模型和服务器端数据模型不匹配导致问题...及时发现由托管对象或上下文线程错误导致问题。...执行任何可能导致错误代码时,应用程序会立刻崩溃,帮助在开发阶段清除隐患。...同步不正常 当网络同步不正常时,请先尝试做以下检查: •网络连接是否正常•设备是否已登录iCloud账户•同步私有数据库设备是否登录是同一个iCloud账号•检查日志,是否有错误提示,尤其是服务器端...如果提供数据集是放置在可同步数据库中时需要谨慎处理。比如,已经在一台设备上创建了默认数据集并进行了修改,当在新设备上再次安装并运行应用程序时,处理不当可能导致数据被异常覆盖,或者重复。

65430

实时切换 Core Data 同步状态

( 在 Data Model Editor 中通过 Configuration 创建 ) 中持久化存储某个 CloudKit container 关联起来。...数据权限模块在开启 NSPersistentCloudKitContainer 同步共享数据库公共数据库功能后,为了提高数据操作权限验证效率,该模块会将共享或公共数据库在 iCloud 上对应原始数据...如何处理共享数据库公共数据库同步鉴于 NSPersistentContainer 并没有提供数据鉴权方面的 API,在你应用使用了共享数据库公共数据库同步功能时,可以采用类似如下方式来处理:import...,屏蔽掉应用中可能导致共享数据库公共数据库进行修改操作功能。...会在重启后( 在应用运行中进行如上操作,iOS 应用会自动重启 )对所有的账户关联数据在设备上进行清除( 并不会清除云端数据,当账户恢复或开启同步功能后仍可同步回本地 )。

1.4K20

WWDC 23 ,SwiftUI 5 和 SwiftData 初印象

如果你打算开发 iOS 17+ 应用,那么就应该马上抛弃 @ObservableObject 这样声明方式。 由于在同一个系统中存在了两种不同数据源声明逻辑,这也给初学者带来了更多困扰。...,直接定位到滚动视图特定位置,只能使用一次 )、全新滚动条控制( 闪烁 )、可自定义行视图在滚动区域顶端和显示区域显示状态( 例如可用其实现类似 watchOS 中滚动到顶端子视图缩小视觉效果...)、支持分页滚动( 开发者长期盼望 )、自定义滚动内容缩进、为滚动内容(非滚动容器)添加安全区域等众多功能。...这是我目前整理一些有关 SwiftData 问题和注意事项( 原文发表在推文中,没有进行更系统归纳): 尚不支持公共和共享数据同步 在当前版本中,通过其他上下文(ModelContext)创建数据并不会自动合并到视图上下文中...中进行) 同样受到 CloudKit 同步限制,演示中 Attribute(.unique) 并不适用于同步场景 目前功能比 Core Data 少,没有新增加 PersistentModel

35410

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

主程序扩展程序数据同步Q:我有一个主应用程序和一个扩展程序,它们都读取相同 Core Data 数据库。但是,当我在主应用程序中进行更改时,我扩展程序在重新启动之前不会看到更改。...通过 CloudKit Dashboard 删除数据Q:一个 Core Data CloudKit 同步问题。...我注意到,当我使用 Safari 客户端从 CloudKit 数据库中删除一条记录时( 通过 CloudKit Dashboard ),该对象仍会保留在设备上 Core Data 数据存储中。...Core Data with CloudKit 同步机制会将同步过程分多次进行。...另外可以考虑使用 CloudKit API 查询云端数据条数,然后已经同步到本地记录数进行比对,获得大致同步进度( 此方式仅适用于数据模型简单,关系不太复杂情况 )。

3.2K20

专注移动厂商和开发者必看 IOS8如何靠键盘改变世界

iOSOSX Extension iOS 过往最让人诟病是App之间整合能力不佳,当然最主要原因是为了安全性以及持续维持好使用者体验。...一直以来Apple都不允许iOS开发者透过Framework去分享程序功能,在这段时间,几乎所有人都是透过cocoapods/github来进行套件分享管理,但是这道封印终于在iOS 8被解开了,再搭配上...CloudKit 如果你哪一天兴致来了,想要写个Cafegram之类App,让全世界的人分享喝咖啡时照片跟心情,但是刚好你只会写 iOS App,或者你只找得到会写 iOS App伙伴,或许就让你兴致减掉一半了...CloudKit是类似PaaS服务,或者说是很接近Facebook Parse服务,开发者完全不用写一行云端程序代码,便可以储存资料到云端去,达到同步以及分享用途。...储存在云端数据库还可以分成Public跟Private使用。Public可以用来作数据共享,如果是匿名登录就只能读取,但如果有登入iCloud账号便可以透过App分享自己信息。

93840

苹果iCloud架构关键组成

苹果iCloud设计目的 1. 跨设备同步与共享:iCloud核心目标是实现苹果设备间无缝数据同步与共享,包括iPhone、iPad、Mac、Apple Watch等。...苹果iCloud架构设计围绕着提供高效、安全、以及用户友好云服务体验展开,其核心设计原则包括分布式存储、数据同步、安全加密、以及灵活API支持。以下是iCloud架构关键组成部分: 1....数据库技术 - FoundationDB和Cassandra: 苹果使用FoundationDB作为其核心数据库技术之一,特别是对于CloudKit服务,而Cassandra则用于处理大量结构化数据存储和查询...开发者平台API - CloudKit API:为开发者提供一套强大API,让他们能够轻松构建支持iCloud应用,实现数据存储、检索、同步等功能,无需管理服务器或数据库。...用户界面管理 - 集成于操作系统:iCloud紧密集成在iOS、iPadOS、macOS等操作系统中,为用户提供直观设置选项和管理工具。

12110

肘子 Swift 周报 #027 | 苹果助你成为一日“百万富翁”

3470612_1_Apple-I-zipic 值得一提是,几天前( 4 月 11 日 )发生一个趣闻:苹果为开发者提供 App Store 管理网站出现了 Bug,导致不少开发者在短时间内销售额显示数据飙升至数百万美元...Syncing data with CloudKit in your iOS app using CKSyncEngine and Swift[16] Jordan Morgan[17] 虽然开发者使用...CloudKit API 从服务器获取数据相对简单,但实时处理本地云端数据同步则面临许多挑战,如复杂网络环境、用户权限限制及设备电量管理策略等。...Jordan Morgan 在本文中详细介绍了使用 CKSyncEngine 来简化数据同步步骤和技术,使得开发者可以更容易地实现复杂应用数据同步。...这篇文章是为那些希望提高应用用户体验并实现流畅数据同步 iOS 开发者提供宝贵资源。

10210

关于 Core Data 并发编程几点提示

该标志将迫使程序执行到理论上会导致并发异常 Core Data 代码时,立刻抛出错误。做到及时发现,尽早解决。...从 iOS 15(macOS Monterey)开始,Core Data 提供了上述方法 async/await 版本。将两者合二为一,通过参数 schedule 来设置任务类型。...比如在托管对象创建后尚未持久化时,它将首先产生临时 ID,持久化后再转换回持久 ID;亦或者当数据库版本或某些 meta 信息发生改变后也可能导致它发生变化(苹果没有公布它生成规则)。...在 Core Data with CloudKit(二) —— 同步本地数据库到 iCloud 私有数据库[4] 中可以看到如何通过 automaticallyMergesChangesFromParent...Core Data 数据: https://www.fatbobman.com/posts/spotlight/ [4] Core Data with CloudKit(二) —— 同步本地数据库到 iCloud

78820

iCloud Documents 详解:基础设置文件操作

写在前面的话 苹果基于 CloudKit 为开发者提供了三个主要功能:CloudKit(保存结构化数据)、NSUbiquitousKeyValueStore(保存键值数据)以及 iCloud Documents...NSUbiquitousContainerIsDocumentScopePublic[8]:当将此键设置为 YES 时,表示该容器中文档范围是公共。...常见值有 None(不允许创建子文件夹)、One(允许一个层级子文件夹)、Any(允许任意层级子文件夹)。...,即使您已在 iOS 模拟器上登录了 iCloud 账户,iCloud 文档同步可能仍然不稳定,特别是在 iOS 17 系统中,这种情况更为常见。...在创建谓词时,不应该依赖于传统文件系统路径和逻辑,而应该使用数据匹配谓词来筛选数据。 NSMetadataQuery 会响应满足谓词任意元数据变化,开发者应根据需求提供尽可能精确谓词。

45810
领券