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

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

持久化历史事务的删除时机Q:在 Consuming Relevant Store Changes[12] 的“清除历史记录”中提到:“因为持久历史跟踪事务会占用磁盘空间,所以确定一个清理策略以在不再需要它们时将其删除...但是,没有给出明确的提示关于如何在不影响 CloudKit 正确性的情况下以安全的方式清除历史。给出的示例是删除所有超过 7 天的事务。但是,为什么是 7 天?为什么不是 14 天?...非常希望一个可靠而具体的示例,说明如何安全地清除历史数据以防止磁盘空间浪费。A:清除历史记录是由客户决定的。通常,应用每年或每半年清除一次历史记录。...从 iOS 15 开始,可以在 Model Editor 中将属性启用加密选项( 不支持老版本的 Model 升级)。...一般来说,首先获取记录( 通过 Core Data 在存储中检查数据是否存在 )往往非常昂贵。如果您必须这样做,则必须批量获取。在此流程中一次获取一条记录将非常缓慢。

2.9K20

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

一样的名词、不一样的含义 在Core Data with CloudKit(二)[2]中,我们介绍了如何同步本地数据库到iCloud私有数据库,本篇我们谈的是如果将共享数据库同步到本地。...•墓碑私有数据库在收到客户端发送的记录删除操作后,会立即将服务器端的记录删除,并保存删除操作的墓碑标志。...其他的客户端设备通过CKFetchRecordZoneChangesOperation获取变更时,私有数据库将变更记录(包括墓碑)一并发送给客户端。...我们无法保证清空一定会发生在所有的客户端都已经同步了"删除"状态,在不影响应用程序业务逻辑的情况下,适当允许设备间的数据不一致是可以接受的。...•仅处理一条记录应用程序仅创建一条和用户或设备关联的数据,并仅对该条数据进行内容更新。通常应用在记录和设备关联的状态或用户(可关联)的状态或 数据。例如游戏高分排行榜(仅保存用户的最高分数)。

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

    CloudKit实践

    最近个人开发了一个保存密码的简单APP,有一个网络备份功能,鉴于功能比较轻便和安全私密性的考虑,采用了CloudKit作为备份服务器的方式进行备份资源。写个博客记录一下应用过程。...CloudKit主要由两个部分组成: 一个仪表web页面用于管理公开数据的记录类型。 一组API接口用于iCloud和设备之间的数据传递。...CloudKit适用于那些在服务端计算量不大,却需要使用大量数据的iOS平台独占应用。 二、分类 CloudKit 的基础对象类型有 7 种。...应用也有一个公开的数据库来存储公共信息,例如你在构建一个根据地理位置签到的应用,那么地理位置信息就应该存储在公共数据库里以便所有用户都能访问到。 CKRecord: 即数据库中的一条数据记录。...三、注册准备 1、首先先登录iOS开发者网站,在证书处注册一个iCloud的Identifiers 2、在Xcode的项目里Capbilities里把iCloud功能打开 3、会在项目目录里自动生成一个

    1.8K10

    Core Data 是如何在 SQLite 中保存数据的

    在创建新的实体数据时,Core Data 将从 Z_PRIMARYKEY 表中找到对应实体最后使用的 Z_PK 值( Z_MAX ),在此值基础上加一,作为新记录的 Z_PK 值,并更新该实体对应的 Z_MAX...如何在数据库中标识关系 Core Data 利用了在同一个数据库中仅需依靠 Z_ENT + Z_PK 即可定位记录的特性来实现了在不同的实体之间标注关系的工作。...image-20220528162005978 在启用了抽象实体的情况下,除了记录对应关系数据的 Z_PK 值外,还会添加一个字段以记录该数据具体属于哪个 Z_ENT ( 父实体或某个子实体)。...container.viewContext.transactionAuthor = "fatbobman" 如果开发者也为上下文也设置了名称,那么 Core Data 也将为该上下文名称创建一条记录...删除事务 查询并提取时间戳早于全部作者( 包含当前应用作者,但不包含系统功能作者 )的最后查询时间的事务 删除上述事务( Z_ATRANSACTION )及其对应的操作数据( Z_ACHANGE )。

    1.6K20

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

    本篇是本系列的最后一篇,本文中将涉及大量之前提到的知识,阅读本文前,最好已经阅读过之前的文章[1]。 相信应该有不少的朋友都使用过iOS自带的共享相簿或者共享备忘录功能。...在WWDC 2021中,苹果将该功能集成到Core Data with CloudKit之中,我们终于可以在使用少量CloudKit API的情况下,用Core Data的操作方式创建具有同样功能的应用程序了...本地存储机制 在之前的文章中,我们已经介绍了如何通过多个NSPersistentStoreDescription创建多个持久化存储。...UICloudShareingController IMG_1886 UICloudShareingController是UIKit提供的一个用于从CloudKit共享记录中添加和删除人员的视图控制器...(停止全部共享),UICloudSharingController会出现与前一条类似的问题——不会删除本地Catch中CKShare。

    1.4K20

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

    如何更新通过文件系统删除的 Core Data 数据的 Spotlight 索引Q:在使用 Spotlight 索引 Core Data 中的内容时,是否可以指定 Spotlight 索引的存储位置?...例如,什么情况下应该使用手动?我也不确定 Category/Extension 的作用以及如何在它和 Class 之间进行选择?...通过 CloudKit Dashboard 删除数据Q:一个与 Core Data 与 CloudKit 同步的问题。...我注意到,当我使用 Safari 客户端从 CloudKit 数据库中删除一条记录时( 通过 CloudKit Dashboard ),该对象仍会保留在设备上的 Core Data 数据存储中。...另外可以考虑使用 CloudKit API 查询云端的数据条数,然后与已经同步到本地的记录数进行比对,获得大致的同步进度( 此方式仅适用于数据模型简单,关系不太复杂的情况 )。

    3.3K20

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

    History Tracking 不同,在网络同步状态可以随时切换的情况下,最好不要清除 Persistent History Tracking 功能创建的 Transaction 记录。...这是因为 NSPersistentCloudKitContainer 是根据 Transaction 来判断哪些数据发生了变化,假设我们在关闭了网络同步状态的情况下删除了 Transaction,开启同步后...当进行 Transaction 删除操作时,我们可以只删除已经被所有成员合并过的记录。...由于无法通过简单的方式得知 NSPersistentCloudKitContainer 的最后更新时间以及已同步的数据位置,因此保留 Transaction 记录是最佳的选择在本文的例程中,通过将 PersistentHistoryTrackingKit...会在重启后( 在应用运行中进行如上操作,iOS 应用会自动重启 )对所有的与账户关联的数据在设备上进行清除( 并不会清除云端的数据,当账户恢复或开启同步功能后仍可同步回本地 )。

    1.5K20

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

    客户端支持: 它为iOS和安卓提供了原生工具包支持。...在移动端,它为iOS、安卓和Windows Phone 8提供了原生支持。在桌面端,它支持OS X和Windows 8(.Net),另外还支持Unity游戏。...CloudKit让每款应用都获得一个存放数据库和记录的容器,而这些记录可以被查询,同时应用也可以通过订阅来改变这些数据。CloudKit还同时支持应用的共享及公共数据库,方便开发者完成数据存储工作。...CKRecord —— 代表 Database 里面一条结构化记录,是键值对的封装,所以可以存储任何数据。...按照 CloudKit API 的说明文档,这种引用的关联是可以做到反向查询和级联删除的,不过笔者好奇的是,对于一对多的关联模型,级联删除该怎么才能做到呢?

    7.4K20

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

    我想知道苹果是如何构建 iCloud 的,这篇文章涵盖了我所知道的一切。 苹果将 FoundationDB 和 Cassandra 用于其云后端服务 iCloud 和 CloudKit。...CloudKit 如何使 FoundationDB 和 Record Layer 来源:FoundationDB Record Layer:多租户结构化数据存储 在 CloudKit 中,应用程序由“...已解决的问题:高并发区域 借助 FoundationDB,CloudKit 可以顺利地处理同时发生的许多更新。...每个记录更新都包括用户当前的“化身”编号,确保即使在移动后,CloudKit 仍然可以通过查看化身号和版本号来确定正确的更新顺序。...该函数考虑了化身、版本和旧的更新计数器值,以维护记录的正确顺序。 已解决的问题:高延迟查询 FoundationDB 是为高并发而非低延迟而设计的。

    20310

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

    .now // 在主队列上赋值} 如果没有开启 Core Data 并发调试标识,上述代码在绝大多数的情况下都将正常运行,这正是此类错误难以发现的原因。...通过 NSManagedObject 来查找上下文 在某些情况下,只能获得托管对象(NSManagedObject),通过从中获取托管对象上下文,保证在正确的队列中对其操作。...为了减轻主线程的压力,在私有队列上进行数据删除操作。...在 Core Data with CloudKit(二) —— 同步本地数据库到 iCloud 私有数据库[4] 中可以看到如何通过 automaticallyMergesChangesFromParent...•在主上下文中修改托管对象 A,尝试保存。•在保存时,A 的乐观锁版本号已经同数据库 B 新的版本号不一致了,发生了保存冲突。此时就需要根据设置的合并策略来解决如何取舍的问题。

    82920

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

    创建可同步Model的注意事项 要在Core Data和CloudKit数据库之间完美地传递记录,最好对双方的数据结构类型有一定的了解,具体请参阅Core Data with CloudKit (一)...不过该对象最多只能支持对应750条记录,无法满足大多数Core Data应用场景的需要,CloudKit采用将Core Data的关系转换成Record Name(UUID字符串形式)逐条对应,这导致CloudKit...20210807100856319 使用自定义的NSPersistentStoreDescription 有些开发者喜欢自定义NSPersistentDescription(即使只有一个Configuration),这种情况下...会自动合并处理两个Store里面的Moive记录。...总结 在本文中,我们探讨了如何实现将本地数据库同步到iCloud私有数据库。 下一篇文章让我们一起探讨如何使用CloudKit仪表台。从另一个角度认识Core Data with CloudKit。

    2.1K20

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

    格式),在不同情况下,系统会去加载你的Extension并呼叫让使用者即使在其他App里也能叫用你App所提供的功能。...所以目前网络上已经有来开始丢出一些有趣的应用了,像是SwiftKey、Fleksy都号称他们在第一时间已经做出符合iOS 8版本的输入功能,并开放beta注册就等着iOS 8正式版上市的那一天了。...CloudKit 如果你哪一天兴致来了,想要写个Cafegram之类的App,让全世界的人分享喝咖啡时的照片跟心情,但是刚好你只会写 iOS App,或者你只找得到会写 iOS App的伙伴,或许就让你兴致减掉一半了...所以当有了CloudKit后,开发者只需要专注在写手机端程序就好,完全不需要去担心云端的负担。 Swift讨论度热烈破表!...整个会场被讨论最多的就是Swift了,讨论的话题不外乎是Swift本身的特性、如何编写 Swift、如何与原有的Objective-C程序代码整合。

    96640

    肘子的 Swift 周报 #058| 运气眷顾耐心的人

    就在师傅准备离开前的最后二十分钟,渗水终于再次出现,而且我们找到了稳定复现的方法。确定漏水点后,问题很快得到解决。 这次维修经历让我联想到最近调试一个代码 Bug 的经历。...在本文中,Sinclair 不仅详细展示了崩溃的成因,还提出了基于 Actor 的改进方案,并深入分析了~Copyable协议和consuming关键字在并发场景中的作用,说明它们如何改进编译时检查,提升代码的并发安全性...在 iOS 中集成实时活动和动态岛 (Integrating Live Activity and Dynamic Island in iOS: A Complete Guide)[13] Radhika...saliya[14] 随着 Live Activities 和 Dynamic Island 在 iOS 应用中的广泛应用,它们已成为用户获取实时动态信息的一种流行方式。...Radhika Saliya 在这篇文章中详细讲解了如何将这两项功能集成到 iOS 应用中。从基础概念到设计指南,再到代码实现,文章内容详尽且条理清晰,为开发者提供了全面的实践指导。

    5700

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

    •模型迁移错误正常情况下,Xcode不会让你生成同CloudKit的Schema不兼容的ManagedObjectModel,所以多数情况下,都是由于在开发环境下,本地的数据模型和服务器端的数据模型不匹配导致的问题...在确认代码版本正确的情况下,可采取删除本地app,重置CloudKit端开发环境的方法来解决。但如果你的应用程序已经上线,应尽量避免此类问题的发生可能。请考虑后文中的更新数据模型提供的模型迁移策略。...在代码中进行账号状态检查,并提醒用户登录账号。 关闭日志输出 在确认同步功能代码已正常工作的情况下,如无法忍受控制台的信息轰炸,可尝试关闭Core Data with CloudKit的日志输出。...2、3两种方式都需要保证网络及账号状态正常的情况下才能检查,让用户自行判断或许最为简单。 移动本地数据库 已经在AppStore上架的应用程序,在某些情况下有移动本地数据库到其他URL的需求。...一旦将Schema部署到生产环境,开发者便无法对记录类型和字段进行重命名或者删除。必须仔细规划你的应用程序,保证其在对数据模型进行更新时仍做到向前兼容。

    73130

    MVCC 原理分析、MySQL是如何解决幻读的

    log的链表,等待purge线程进行最后的删除。...当有行数据插入或则删除时并且在查询范围之内,就会造成幻读的现象。为了解决当前读情况下出现幻读的问题,MySQL InnoDB 引擎引入了next-key lock,其等同于 记录锁+间隙锁 的组合。...当执行当前读时,在锁定读取到的记录的同时,也会锁定它们的间隙,防止其它事务在查询范围内插入数据。只要我不让你插入,就不会发生幻读。...默认情况下,InnoDB以 REPEATABLE READ 隔离级别运行。在这种情况下,InnoDB 使用 Next-Key Lock 锁进行搜索和索引扫描,以防止幻读的发生。...当执行当前读时,在锁定读取到的记录的同时,也会锁定它们的间隙,防止其它事务在查询范围内插入数据。只要我不让你插入,就不会发生幻读。

    60510
    领券