首页
学习
活动
专区
圈层
工具
发布

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

我在一个应用程序中尝试它,该应用程序有 30,000 多条记录,但它们无法从 Mac ( 开发状态 )同步到 iPhone( 开发状态 )。A:如果没有更多细节,很难确定。...如果你对查询有特别的需求的话,可以将枚举类型中关联数据打散,在实体中,将所有的关联值都定义成属性,并增加一个与枚举对应的类型属性,在托管对象中定义一个枚举类型的计算属性,通过它对数据进行转换。...A:在每个版本中添加一个新的托管对象模型会更安全,但是如果您从一个版本到另一个版本的更改经过充分测试以表明适用于轻量级迁移推断,那么单个托管对象模型就足够了。...在我的设置中,存储被保存到一个应用程序组目录中,以允许从应用程序和扩展程序访问,所以我认为每个进程都将利用各自的容器来访问它。...一般来说,首先获取记录( 通过 Core Data 在存储中检查数据是否存在 )往往非常昂贵。如果您必须这样做,则必须批量获取。在此流程中一次获取一条记录将非常缓慢。

4.1K20

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

严格意义上,我们很难仅通过切换通知来判断当前同步的实际状态。 在实际的使用中,对用户感知影响最大的是数据导入状态。...如果提供的数据集是放置在可同步的数据库中时需要谨慎处理。比如,已经在一台设备上创建了默认数据集并进行了修改,当在新设备上再次安装并运行应用程序时,处理不当可能导致数据被异常覆盖,或者重复。...增加version属性 这个策略是上一个策略的加强版。通过一开始在实体上添加version属性,对实体进行版本控制,通过谓词仅提取与应用程序当前版本兼容的记录。旧版本程序将不会提取新版本创建的数据。...创建新CKContainer及新的本地存储 如果你的数据模型发生了巨大的变化,采用上述方式已经很难处理,或者上述方式会造成巨大的数据浪费时,可以为应用程序添加一个新的关联容器,并通过代码将原始数据转移到新容器上...大概的流程为: •在应用程序中添加新的xcdatamodeld(此时应该有两个模型,旧模型对应旧容器,新模型对应新容器)•为应用程序添加新的关联容器(同时使用两个容器)•判断是否已经迁移,如果没有迁移则让应用程序通过旧模型和容器正常运行

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

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

    如果想获得更好的阅读体验可以访问我的个人博客 www.fatbobman.com 本篇文章中,我们将探讨Core Data with CloudKit应用中最常见的场景——将本地数据库同步到iCloud...快速指南 在应用程序中启用Core Data with CloudKit功能,只需要以下几步: 1.使用NSPersistentCloudKitContainer2.在项目Target的Signing&...尽管在我两年多的使用中,基本没有遇到过这种情况,但我还是推荐大家在代码中增加上下文快照的锁定以提高稳定性。...不过该对象最多只能支持对应750条记录,无法满足大多数Core Data应用场景的需要,CloudKit采用将Core Data的关系转换成Record Name(UUID字符串形式)逐条对应,这导致CloudKit...中写入的数据合并到container的viewContext中 我目前没有找到任何资料解释为什么协调器可以合并查询多个Store中的*同一个Entity,但在实际使用中确实可以实现预期中的结果。

    2.6K20

    储存篇 - CoreData使用大全

    【一】前言 Core Data框架提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite3数据库文件中,也能够将保存在数据库中的数据还原成OC对象。...; } // 如果是想做更新操作:只要在更改了实体对象的属性后调用[context save:&error],就能将更改的数据同步到数据库 } 3、删:删除数据 /** 删除数据...【五】关于CoreData的版本迁移 应用场景:修改了实体的数据结构(比如说某个实体增加了一个特性),因为APP版本更新后沙盒中的NSDocumentDirectory 中的缓存数据都不会被清除,这时候就要进行版本迁移了...,否则已经安装旧App的手机,在更新应用后,两边数据结构不一致导致不能识别,会崩溃。...但是在使用过程中会出现大量代码, 而且CoreData学习曲线比较陡峭,如果掌握不好,在使用过程中很容易造成其他问题。

    3.3K20

    「死磕」Core Data——入门

    (对应App中的「对象」) 就我的理解,Managed Object和上面提到的Entity,本质上是同一个东西,就是你的数据对象,只不过是在可视化操作和纯代码操作中的不同称谓。...也可以新建一个专门负责储存功能的类,在这个类中敲这段代码。(我一般不喜欢将这部分代码放在AppDelegate类中,所以我创建工程的时候,都不会勾选Use Core Data)。...SPKUser // 在OC中,将某个属性实现为@dynamic,表示编译器在编译时不会对这个属性的存取方法(getter/setter)做检查(由程序员自己提供存取方法)。...版本「迁移」 应用场景:修改了数据结构(比如说某个实体增加了一个特性),这时候就要进行版本迁移了,否则已经安装旧App的手机,在更新应用后,两边数据结构不一致导致不能识别,会崩溃。...以上是自动、轻量化的版本迁移,至于更复杂的版本迁移,我目前也没有接触到,不再展开。

    1.5K20

    iOS CoreData (二) 版本升级和数据库迁移

    ,如果仅仅是在旧版本的数据模型上进行上述操作,就会造成所有旧用户更新完成后的第一次启动崩溃。...接下来在我之前写的 iOS CoreData (一) 增删改查 示例基础上进行演示: 1、新建一个版本的数据库模型Model2: 选中Model.xcdatamodeld文件,选择菜单editor->...add model version.gif 2、设置当前coreData的数据模型为Model2: 选中Model.xcdatamodel或Model2.xcdatamodel,在左侧的Model...设置当前数据库版本.gif 3、修改新数据模型Model2,在Model2上添加字段及表: 从第2步 演示图中可以看到旧Model中的表和实体属性都自动迁移到了Model2中,新的表和实体属性我们可以直接在...= YES,那么Core Data会试着把之前低版本的出现不兼容的持久化存储区迁移到新的模型中,这里的例子里,Core Data就能识别出是新表,就会新建出新表的存储区来。

    1.6K50

    老司机出品——数据持久化之基于FMDB的ORM数据库设计

    说到iOS中的数据存储,无非有4中方式: plist 偏好设置 归解档 数据库及其扩展封装 那今天我们就一一展开来讲一下他们各自的优缺点。...---- 归解档 相对于前两种方法,归解档这种方法更适应于模型等特殊数据类型的持久化。想要归解档,你的模型首先要遵循协议。然后在需要归档或解档的地方直接调用对应方法即可。...就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。...惯得 CoreData CoreData是苹果在iOS5之后推出的一款ORM数据库方案,同样他也是针对sqlite3的一种封装。使用它开发者可以只关心数据模型中的数据,而不应考虑数据库中如何操作。...他的使用方法我也是扔链接吧。iOS CoreData (一) 增删改查 他的优势在于如果你一开始就使用CoreData搭好一个框架的话,那么在之后的使用中将会减少很多代码量。

    1.4K30

    iOS CoreData (二) 版本升级和数据库迁移

    如果仅仅是在旧版本的数据模型上进行上述操作,就会造成所有旧用户更新完成后的第一次启动崩溃。...接下来在我之前写的 iOS CoreData (一) 增删改查 示例基础上进行演示:1、新建一个版本的数据库模型Model2: 选中Model.xcdatamodeld文件,选择菜单editor->Add...]2、设置当前coreData的数据模型为Model2: 选中Model.xcdatamodel或Model2.xcdatamodel,在左侧的Model Version 中选择Current模版为Model2...[设置当前数据库版本.gif]3、修改新数据模型Model2,在Model2上添加字段及表: 从第2步 演示图中可以看到旧Model中的表和实体属性都自动迁移到了Model2中,新的表和实体属性我们可以直接在...= YES,那么Core Data会试着把之前低版本的出现不兼容的持久化存储区迁移到新的模型中,这里的例子里,Core Data就能识别出是新表,就会新建出新表的存储区来。

    1.6K100

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

    Core Data with CloudKit(三)——CloudKit仪表台 本系列文章一共六篇,如果想获得更好的阅读体验可以访问我的博客 www.fatbobman.com[1] 本篇文章中,我们将一起研究...非常类似Core Data的应用程序上线前的状态,即使数据无法正常迁移,只需要删除重装app即可。通过开发环境,开发者可以在向用户提供CloudKit服务之前对应用程序进行充分的测试。...原因非常简单,一旦应用程序上线,我们无法控制客户端的更新频率,也就是客户端可能存在任何的结构版本,为了能够让低版本的客户端一样可以访问数据,任何对数据模型的更改都需要向下兼容。...CKRecord时,将ZoneID统一设置为com.apple.coredata.cloudkit.zone。...中的一个或多个记录时,如果值为true则整个操作失败 Records 用于数据记录的浏览、创建、删除、更改、查询。

    1.1K20

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

    在应用执行过程中,通过任意断点暂停程序的执行,在调试窗口中输入如下命令,即可获得应用在沙盒中的根路径。...Z_UUID 字段 当前数据库文件的 ID 标识( UUID 类型)。可以通过托管对象协调器获取该值。在将 NSManagedObjectID 转换成可存储的 URL 时,该值表示对应的持久化存储。...在 SQLite 中对应的字段为 Z_UUID + Z_ENT + Z_PK 。通过将 NSManagedObjectID 转换成可存储格式的 URL ,可以将它的构成清晰地展示出来。...用于持久化历史跟踪的表 在 CoreData 中,如果你的数据保存形式是 SQLite(绝大多数的开发者都采用此种方式)且启用了持久化历史跟踪功能,无论数据库中的数据有了何种变化(删除、添加、修改等),...时间戳晚于上次当前应用的查询时间 作者不是当前 App 的作者或其他系统功能作者 获取满足上述条件的全部 Z_CHANGE 记录 合并事务 事务中提取的数据操作记录( Z_ACHANGE )中包含了完整的操作类型

    2K20

    FinClip SaaS 平台——小程序转APP操作指南及其实现

    「生成 App」的功能,可以在自己的小程序基础之上,快速生成 iOS  与 Android 的独立应用,之后则可以在 Xcode 或 Android Studio 中对相关资源进行配置优化,随后就可以编译出属于自己的独立...; 可以将大多数功能使用小程序实际实现,App 中仅保留基本主页(或者完全作为空壳应用); App 体积十分小,用户获取与安装十分简单。...操作指南 这里我们选择打开上一次编译的小程序项目:FinClipDemo 填写如下内容: 进入如下入口: (我的小程序--》审核版本---》新增审核--》选择刚刚上传的代码版本) 之后填写信息也可以不填写自己可以直接审核通过...: 点击确认通过审核即可: 接着前往该入口(小程序上架审核)查看: 点击同意即可: 接下来上架该版本: 当看到如下界面代表上传成功: IDE生成APP 需要手动设置BundleID和该小程序绑定的应用...sdk过程 MainActivity启动小程序并finish掉当前页面 在onCreate中注册小程序生命周期监听当小程序启动时finish掉MainActivity页面,如果不finish掉在小程序页面按下返回键会返回到

    1K31

    【IOS开发进阶系列】APP性能优化专题

    1 优化资源文件         在iOS本地资源文件编译后放置与应用程序包(Bundle)文件中即应用名>.app文件。...AIFF的压缩格式是AIFF-C(或AIFC),将数据以4:1压缩率进行压缩,应用于Mac OS X和iOS系统。...,这些缓存直到应用停止才清除,如果是贯穿于整个应用的图片(如图:图标、logo等)推荐使用。...3.2    使用SQLite数据库 3.2.1  表结构优化         在iOS这些CPU处理能力低、内存少、存储空间少情况下,我们不能在本地建立复杂表关系,表的个数也不宜超过5个,表中的字段数量也不宜太多...= OFF", NULL, NULL, &err); 3.3    使用CoreData 3.3.1  使用存储类型NSSQLiteStoreType         CoreData的存储类型有NSSQLiteStoreType

    76320

    Swift:缓存Codable数据

    我们的大多数应用程序都是某些后端的REST客户端。在开发此类应用程序期间,我们希望使其保持脱机状态。在这种情况下,我们必须将数据缓存在设备本地的某处,以使其无需互联网即可读取。...Apple提供了CoreData框架,这是在本地存储应用程序数据的最佳方法。它具有许多出色的功能,可帮助您促进开发。但是,很难将其用作简单的缓存。...大多数时候,我们只需要显示缓存的数据,而无需任何其他操作。我认为,我们所需要的只是纯磁盘存储。本周,我们将讨论如何轻松地为Codable结构实现简单的磁盘存储。 ?...CodableStorage 首先,为我们的存储逻辑定义几个协议。我想分开访问存储的可写和可读部分,这是我们可以使用Swift语言的协议组合功能的地方。...Timeline是一个简单的遵循Codable协议的结构体,表示存储在CodableStorage中的字符串数组。 今天,我们讨论了一种可存储可编码结构的简单方法,该结构可通过REST API获取。

    1.8K00

    掌握 Core Data Stack

    持久化存储提供了一种标准的 API,将 Core Data 的内部数据对象、逻辑、操作转换成对应存储类型的指令或记录。...如果 Core Data 预置的四种存储类型不能满足你的需要,开发者也可以为自己的数据源定制所需的持久化存储。 在几年前,多数应用只需创建一个持久化存储。...更多关于 NSCoreDataCoreSpotlightDelegate 的内容,请参阅我的文章 在 Spotlight 中展示应用中的 Core Data 数据[5]。...•如果你需要在 Core Data Stack 中处理持久化历史跟踪的事务通知或者调用 NSCoreDataCoreSpotlightDelegate 的话,使用类更方便编程。...在开发中的 健康笔记 3[6] 里,我需要让内存模式同非内存模式共存,也就是在特定的情况下,应用程序中同时会存在两个使用同样托管对象模型的 Container,并可随时切换。

    1.1K30

    vue3 day01

    setup 理解: vue3.0中一个新的配置项,值为一个函数 setup是所有Composition api(组合api) 表演的舞台 组建中所用到的东西,数据,方法等等,均要配置在setup中 setup...函数的两种返回值 若返回一个对象,则对象的属性,方法,在模板中均可以直接使用(重点关注) 若返回一个渲染函数,则可以自定义渲染内容(了解) 注意点 vue2.x配置(data,methods,computed......)中可以访问到setup中的属性,方法 但是setup中不能访问到vue2.x配置(data,methods,computed) 如果有重名,setup优先 尽量不要与vue2.x配置混用 setup...不能是一个async函数,因为返回值不再是return的对象,而是promise,模板看不到return对象中的属性 hello setup的第一种用法 我是setup...${name},我今年${age}岁`) } 实际上是修改了,但是因为不是响应式数据,视图不刷新 使用ref解决这个问题 setup(){ let name = ref("花花");

    22520

    CoreData和FMDB你用哪个?

    苹果推荐开发者去使用CoreData,但 FMDB 在 git 上的那上万颗星星也说明了开发者对它的喜爱。...在开发中你要是只是使用一张表去存储一点简单的东西,使用FMDB也方便,可是一旦表与表之间产生属性关联的话,用FMDB就比较的麻烦了。但用 CoreData 就比较的容易。        ...在CoreData中 有一个控制器 NSFetchedResultsController专门为了关联数据库和视图而生的,这个Demo是写好了的,需要的留言告诉我我发给你。...如果你也不太清楚地,知识点链接在下面,看看至少知道这条语句说的是什么意思。...Sqlite中INTEGER PRIMARY KEY AUTOINCREMENT和rowid的使用 上面说了这些,还是那句两个都不错,所以两个都学学,挺好!需要上面Demo就留言Q我,我发给你!

    2K100

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

    如果用户在应用程序之外删除文档,例如在 Finder 中,我希望 Spotlight 中的索引与它一起被删除。所以我想如果索引可以存储在包文件夹中,那就可以解决这种情况。有没有办法正确处理这种情况?...在应用程序中一次性加载 CoreData 数据并将其保存在局部变量中使用多个 FetchRequests我目前在 SwiftUI 中使用 UICalendarView 并从 CoreData 中获取数据...如何从 UserDefaults 转换至 Core DataQ:目前,我的应用程序使用 @AppStorage 进行数据持久化。我有三个主要的模型对象,它们被存储在当前设备上。...我注意到,当我使用 Safari 客户端从 CloudKit 数据库中删除一条记录时( 通过 CloudKit Dashboard ),该对象仍会保留在设备上的 Core Data 数据存储中。...实体属性的可选性Q:Core Data 中实体属性的可选性表现与预期不一致。如果我将某个属性标记为可选,则该属性不应具有默认值,并且托管属性应始终为可选属性。

    4.3K20

    Mac 环境Appium自动化测试环境搭建

    可以在AppStore中安装最新版本,后续我们配置WebDriverAgent会用到此工具。 JDK 点击 JDK下载地址 下载 jdk-xxx_osx-x64_bin.dmg文件安装。...atx$ idevice_id -l 6dd5e55bf4204cd5ad8042dc4ecb2b703bbxxxxx 2.查看设备已经安装的应用bundleID atxdeMac-mini:~ atx...3.如果是免费版的个人证书,还需要修改下WebDriverAgent的BundleID,随便加点后缀,只要不跟其他人的重名就好。 ? 运行测试 1.菜单栏选择目标设备 ?...如果看不到的话,依次点击Xcode菜单 View->Debug Area->Activity Console ?...解决方法:遇到这个问题,说明手机上已经有一个WebDriverAgent的应用了,只是BundleID不一致,需要先将手机上的卸载掉,重新运行 Product -> Test 2.设备未信任 ?

    2.8K30

    黑了记者:写个恶意软件玩玩(一)

    即使有了这些,我们也没能知道他和妻子所用的操作系统(Windows, OSX, Linux等等)。 在针对特定的目标设计恶意软件时,所用的负载是平台相关的。...现在你可能会问,“等等,如果没有安装Java呢?”, “如果他们是在智能手机上打开文件呢?”。 “如果安装了杀毒软件怎么办?”。 这些都是可能的问题。...没有做太多的技术处理,我逻辑处理中的一个错误导致恶意软件在Adam妻子关上电脑(将其休眠而不是重启)之后无法运行。 意识到这一点,25分钟之后,我搞好了OSX恶意软件的2.0版本。...我们将恶意的OSX程序打包进一个ZIP文件。当文件打开时, 程序不仅会执行我改进后的恶意软件,同时还会打开一个合法的视频文件。这是符合我们上次的处理场景的。...也更改了默认的图标,让其看起来是个正常的视频文件。 我们猜测如果Adam妻子这次再打开文件,看到一个视频文件打开,会认为文件是正常的。 ?

    762100

    利用Flutter开发了一个可运行小程序的App

    Flutter的路由传值非常方便,push一个路由,会返回一个Future对象(也就是Promise对象),使用await或者.then就可以在目标路由pop,回到当前页面时收到返回值。...Flutter主要的优势在于动画流畅,很多开发者反应比原生安卓还流畅(存疑),至少在iOS上是看不到卡顿的,安卓上动画也很稳定,性能上展示了Google的硬实力。...Flutter的前端动画设计如此之优秀,在国内小程序是非常重要的技术平台,是否正如“术业有专攻”将Flutter框架应用到小程序端?...小程序的Flutter在各大技术平台都有很多干货,这里就不赘述了。其实这里更简单,就是基于 Flutter 将小程序转为App,下面主要讲讲我发现的,用FinClip将小程序转App的实操。...第一步:登录 FinClip 管理后台第二步:在“小程序管理中”找到:我的小程序>>小程序详情>>第三方管理。

    2.8K20
    领券