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

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

因此,是否保存在 Core Data 中,取决于你的具体使用场景。对于需要同步的应用来说,如果采用在 Core Data 中保存 URL 并将数据保存到目录的方式,需要自己实现外置数据的同步。...如果我说尝试进行数据共享,如果 CKShare 不存在,它可以工作 - 万岁!但是,如果我第二次共享并且 CKShare 已经存在只会出现永远旋转的风火轮。...A:在 SwiftUI 中使用 CoreData 没有问题。您可以通过 @FetchRequest[8] 从存储中获取检索结果。@FetchRequest 是个让人又爱又恨的东西。...此元数据归 Core Data 所有,不建议你更改如果你愿意,可以将自己的元数据存储在存储文件中,但请注意你的密钥不要与现有的 Core Data 拥有的密钥重叠。...另一种方法是通过获取请求( fetch request )确定对象是否已经存在如果存在,则更新现有记录,如果存在则创建新记录。在 Apple 看来,哪种方式是处理记录创建和更新的首选方式?

2.8K20

Swift实践:使用CoreData完成一个通讯录存储

CoreData作为Apple的亲儿子,依然在App需要存储结构化数据上发挥着重要的作用。CoreData已经超过十年了,而且亲爹还在积极的维护着。...这些对象都保存在NSManagedObjectContext中,每个存储对象都知道自己对应哪个上下文。 NSManagedObjectContext :日常打交道的都是这个。...如果保存失败,进行处理 保存到数组中,更新UI 3. 更新一个通讯录的列表页Demo 需求:完成一个通讯录的列表页。...确实简化了咱们第一次学习的成本,但是就像没人会把所有代码都写在Controller里面一样,在APPDelegate也不会写这些东西。...如果保存失败,进行处理 do { try managedObectContext.save() } catch { fatalError("无法保存")

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

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

如果对同步状态切换的实时性没有迫切的需求,那么应该以此种切换方式为首选。...如果我们不对 cloudKitContainerOptions 进行设置( 或设置为 nil ),那么 NSPersistentCloudKitContainer 将不会在此 NSPersistentStoreDescription...Persistent History Tracking 支持,NSPersistentCloudKitContainer 可以获知应用在 SQLite 上的所有操作,然后将数据转换成 CloudKit 对应的格式,并保存在...所有的网络同步操作都将以日志的形式保存在 SQLite 中。在 iCloud 账户状态发生变动后,NSPersistentCloudKitContainer 将使用这些同步记录作为数据重置的凭据。...某些系统应用提供了在 iCloud 账户退出后保留本地数据的能力。但 NSPersistentCloudKitContainer 默认并不提供保留数据的设计。

1.5K20

储存篇 - CoreData使用大全

【一】前言 Core Data框架提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite3数据库文件中,也能够将保存在数据库中的数据还原成OC对象。...使用此功能,要添加CoreData.framework和导入主头文件 。...如果是Xcode8之前的版本自动创建的Core Data Stack,会不一样(跟情况2类似),如下图: ? 一个大坑: ?...但是在使用过程中会出现大量代码, 而且CoreData学习曲线比较陡峭,如果掌握不好,在使用过程中很容易造成其他问题。...对于MagicalRecord 的使用感受就是,确实如的名称一样,如此简洁和方便的实现了对象的增删改查,如此的充满魔力,关于的的更多使用可以参考上面的中文文档,相信大家都可以熟练掌握这个好用的类库!

2.5K20

iOS面试题梳理(二)

2.多个对象间依然会存在循环引用问题,形成一个环,在编程中,形成的环越大越不容易察觉,如下图所示: 解决方法: 1,事先知道存在循环引用的地方,在合理的位置主动断开一个引用,是对象回收; 2.使用弱引用的方法...同时,查找实例变量的时候也会不仅仅查找someKey这个变量,也会查找_someKey这个变量是否存在。...当我们释放我们的对象时,为什么需要调用[super dealloc]方法,的位置又是如何的呢因为子类的某些实例是继承自父类的,因此需要调用[super dealloc]方法, 来释放父类拥有的实例,其实也就是子类本身的...6.CoreData :通过管理对象进行增、删、查、改操作的。它不是一个数据库,不仅可以使用SQLite数据库来保持数据,也可以使用其他的方式来存储数据。如:XML。...提供的是对象-关系映射功能,也就是说,CoreData可以将Objective-C对象转换成数据,保存到SQL中,然后将保存后的数据还原成OC对象。

1.2K101

IOS开发之记录用户登陆状态

上一篇博客中提到了用CoreData来进行数据的持久化,CoreData的配置和使用步骤还是挺复杂的。但熟悉CoreData的使用流程后,CoreData还是蛮好用的。...那么我们在App开发中如何记录用户的登陆状态呢?...之前在用PHP或者Java写B/S结构的东西的时候,我们用Session来存储用户的登陆信息,Session是存在服务器上仅在一次回话中有效,如果要记录用户的登陆状态,那么会用到一个叫Cookie的东西...那么我们有其他更便捷的方法吗?苹果这么注重用户体验,当然有其他的方法了,就是NSUserDefault....在退出按钮回调的方法中,我们需要把之前保存的用户信息进行remove掉,同时用模态的方式来跳转到登陆页面,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

1.5K90

「死磕」Core Data——入门

OK,基本上就是这些东西了~ 术语 CoreData学习曲线陡峭的原因之一,术语太多算一个。所以这里整理一下,如下: ?...也就是你要保存什么东西,这些东西有什么特性,这些东西之间有什么关系……Xcode提供了一套可视化的方案让我们「描述」这部分内容。...创建NSManagedObject子类 好了,通过上面的一步,我们知道我们要保存的是什么东西,以及知道他们是什么关系了(数据模型建好了)。...注意:此时数据只存在内存中,并没有固化、保存到沙盒。还需要通过特定的保存方法才能固化到沙盒。 另外,不能用alloc、init方法创建一个新的对象,会崩溃。...注意:在调用save方法之前,上面做的所有操作(增、删、改),都只是保存在内存中,并不会固化到沙盒中。

1.1K20

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

image-20220528103959218 启用调试参数 如果你在项目中开启了 Core Data 的调试信息输出,那么可以直接在调试信息的顶部找到数据库的路径地址。...用于持久化历史跟踪的表 在 CoreData 中,如果你的数据保存形式是 SQLite(绝大多数的开发者都采用此种方式)且启用了持久化历史跟踪功能,无论数据库中的数据有了何种变化(删除、添加、修改等),...Core Data 将与某次事务有关的信息保存在 Z_ATRANSACTION 表中。其中最为关键的信息是事务创建的时间和事务作者。...ZQUERYGEN 字段 如果为托管对象上下文设置了锁定查询令牌( NSQueryGenerationToken[9] ),那么事务记录中还会将当时的查询令牌保存在 ZQUERYGEN 字段中 ( BLOB...因此即便你已经完全掌握了 Core Data 的外部存储结构,但最好还是尽量不要直接对数据库进行操作,苹果可能在任何时刻改变的底层实现。

1.5K20

Swift实践:使用CoreData完成上班签到小工具1. CoreData Stack的作用2.创建 CoreData Stack3. 一对多的关系4. 完成Demo,了解使用CoreData St

image.png 之前在前两篇里面实现了一个十分简陋的通讯录,而且都是通过系统默认的方式创建的CoreData。可是实际中哪里有那么好的事情嘛,要是忘记在创建工程的时候勾选了下面这个图怎么办?...CoreData Stack的作用 其实这个东西在一篇的时候提到过,不信您看:Swift实践:使用CoreData完成一个通讯录存储 一个基本的 Core Data 栈由四个主要部分组成:托管对象 (NSManagedObject...CoreDataStack,是自定义的一个CoreData 的栈对象,可以通过,初始化项目的CoreData,以及获取到Context,对数据库进行增删改查等操作。...Step1:搞一个NSPersistentContainer出来 Step2:创建CoreData Stack Step3:别忘了还有一个NSManagedObjectContext Step4:提供一个保存数据的方法...补充:如果创建工程的时候遗忘了勾选使用CoreData怎么办 如果忘选了也没有关系,创建一个新的Data Model文件: image.png 设置完数据库之后,按照如下操作: image.png 好啦

1.5K30

iOS开发之表视图爱上CoreData

(上面是笔者自己为了更好的理解CoreData而做的简单类比,如果学过PHP的ThinkPHP框架的小伙伴们也可以和TP中的ORM类比)。   那么TableView为什么会爱上CoreData呢?...CoreData相当于TableView和sqllite的纽带,说的专业一些就是映射,那么我们CoreData如何使用才会简化我们的操作呢?...下面将要介绍的才是这篇博客中的重点:我们如何使用CoreData才会让TableView爱上呢?...3.在之前保存的ViewController中如果Person为空,说明是执行的添加记录的方法我们就生成一个新的person, 如果Person不为空则不新建Person对象,直接更新完保存。     ...IBAction)tapSave:(id)sender {     //如果person为空则新建,如果已经存在则更新     if (self.person == nil)     {

2.1K80

iOS CoreData (一) 增删改查

Core Data是iOS5之后才出现的一个框架,本质上是对SQLite的一个封装,提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成...OC对象,通过CoreData管理应用程序的数据模型,可以极大程度减少需要编写的代码数量!...更新于2018.3.7 iOS CoreData (二) 版本升级和数据库迁移 [增删改查.gif] 1、首先创建一个coreData 模型文件:系统创建或者自己创建 [系统创建模型文件.png]...如果通过对象的key path指定匹配条件,需要使用%K */ //创建查询请求 NSFetchRequest *request = [NSFetchRequest...选择Arguments,在下面的ArgumentsPassed On Launch中添加下面两个选项,如图: (1)-com.apple.CoreData.SQLDebug (2)1 [CoreData

1.2K70

iOS本地数据存储

正文 数据存储 数据存储本质就是运行时的对象保存在文件、数据库中。...Library/Preferences目录通常用于保存用户的设置等信息,比如我们常用的NSUserDefaults类就会以plist的方式保存在该目录中。...CoreData 如果不想使用第三方库,也可以使用iOS系统提供的CoreData框架。 CoreData的接口更加简化,部分可视化操作,对象代码自动生成等。 表结构(可视化操作,代码生成): ?...通常我们的数据都会保存在沙盒目录中,读取的时候可以直接指定路径,也可以用NSFileManager去查找和遍历目录;我们工程中的资源文件会存在应用目录,需要用NSBundle去读取。...如果涉及到安全相关的敏感数据,则不应该保存在文件、数据库等可以被抓取的地方。此时可以使用iOS提供的keychain对敏感数据进行保存。keychain的数据是经过加密处理,具有较高的安全性。

2.9K20

iOS 面试策略之系统框架-网络、推送与数据处理

一般将下载的数据保存在一个临时的文件中;在 cancel 后可将数据保存,并之后继续下载。 它们之间的关系如下图: [image] 5. 什么是 Completion Handler?...10.谈谈 iOS 开发中数据持久化的方案 关键词: #plist #Preference #NSKeyedArchiver #CoreData 数据持久化就是将数据保存在硬盘中,这样无论是断网还是重启...它是一个 XML 文件,会将某些固定类型的数据存放于其中,读写分别通过 contentsOfFile 和 writeToFile 来完成。一般用于保存 App 的基本参数。 Preference。...通过 UserDefaults 来完成 key-value 配对保存如果需要立刻保存,需要调用 synchronize 方法。...它会将相关数据保存在同一个 plist 文件下,同样是用于保存 App 的基本参数信息。 NSKeyedArchiver。遵循 NSCoding 协议的对象就就可以实现序列化。

1.8K00

2019最新iOS面试题及答案

(Reference Counted)手动内存计数:就是说,从一段内存被申请之后,就存在一个变量用于保存这段内存被使用的次数,我们暂时把称为计数器,当计数器变为0的时候,那么就是释放这段内存的时候。...答:有以下几种保存机制: 1).通过web服务,保存在服务器上 2).通过NSCoder固化机制,将对象保存在文件中 3).通过SQlite或CoreData保存在文件数据库中 45....NSThread NSThread是一个控制线程执行的对象,它不如NSOperation抽象,通过我们可以方便的得到一个线程,并控制。...这似乎就不是完整的面向对象了,按照OO的原则就是一个对象只暴露有用的东西. 如果没有了私有方法的话, 对于一些小范围的代码重用就不那么顺手了....如果模块以类实现,那么要按照cpp class的标准写类的定义,头文件中不能出现obj-c的东西,包括#import cocoa的。

2.3K20

iOS CoreData (一) 增删改查

Core Data是iOS5之后才出现的一个框架,本质上是对SQLite的一个封装,提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成...OC对象,通过CoreData管理应用程序的数据模型,可以极大程度减少需要编写的代码数量!...更新于2018.3.7 iOS CoreData (二) 版本升级和数据库迁移 ? 增删改查.gif 1、首先创建一个coreData 模型文件:系统创建或者自己创建 ?...--记住保存 if ([_context save:&error]) { [self alertViewWithMessage:@"删除 age < 10 的数据"];...如果通过对象的key path指定匹配条件,需要使用%K */ //创建查询请求 NSFetchRequest *request = [NSFetchRequest

1.1K80

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

存储的时候也是数组或者字典保存在文件系统中,示例代码如下: ///读取 NSString * path = [[NSBundle mainBundle] pathForResource:@"Info"...惯得 CoreData CoreData是苹果在iOS5之后推出的一款ORM数据库方案,同样他也是针对sqlite3的一种封装。使用它开发者可以只关心数据模型中的数据,而不应考虑数据库中如何操作。...iOS CoreData (一) 增删改查 他的优势在于如果你一开始就使用CoreData搭好一个框架的话,那么在之后的使用中将会减少很多代码量。...缺点也很明显,在初次建立映射关系的时候较为繁琐,而且如果是既有工程想做数据迁移的话,也十分麻烦。每添加一个就建议一次映射关系其实也是挺累的。...完犊子 ---- 那么有没有一款不用考虑sql语句,你用考虑映射关系,数据迁移一步到位的基于sqlite3的数据库方案呢?当然是有的,要不然老司机为什么在这白话了3618个字符。

1.1K30

Core Data with CloudKit (一) —— 基础

私有数据库保存在用户个人的iCloud空间中,公共数据库的容量会随着应用程序使用者的增加而自动提高,最高可增加到1 PB 存储、10 TB 数据库存储,以及每天 200 TB 流量。...作为对象图和持久化框架,几乎每个教程都会告诉你,不要当作数据库,也不要当作ORM。...用户可以在多个设备上访问保存在iCloud上的数据。 CloudKit的数据类型、内在逻辑和Core Data有很大的不同,需要做一些妥协或处理才能将两者的数据对象进行转换。...应用程序的使用者(已经登录了iCloud账号)只能访问自己的私有数据库,该数据库的数据保存在用户个人的iCloud空间中,其他人都不可以对其数据进行操作。...如果数据保存在自定义的CKRecordZone,我们也需要在CKRecord.ID中指明。

96530

iOS两年前的面试题总结,现在的你掌握了嘛?

其他注意事项 如果一个对象有一个_strong类型的指针指向着,找个对象就不会被释放。如果一个指针指向超出了的作用域,就会被指向nil。如果一个指针被指向nil,那么原来指向的对象就被释放了。...CoreData :通过管理对象进行增、删、查、改操作的。它不是一个数据库,不仅可以使用SQLite数据库来保持数据,也可以使用其他的方式来存储数据。如:XML。...提供的是对象-关系映射功能,也就是说,CoreData可以将Objective-C对象转换成数据,保存到SQL中,然后将保存后的数据还原成OC对象。...,才会刷新的值,其它不用修改,那么不用引用任何按钮,直接在回调时,就已经将接收响应的按钮给传过来了,直接通过修改即可。...精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。

1.1K20

iOS,面试必看,最全梳理

其他注意事项 如果一个对象有一个_strong类型的指针指向着,找个对象就不会被释放。如果一个指针指向超出了的作用域,就会被指向nil。如果一个指针被指向nil,那么原来指向的对象就被释放了。...CoreData :通过管理对象进行增、删、查、改操作的。它不是一个数据库,不仅可以使用SQLite数据库来保持数据,也可以使用其他的方式来存储数据。如:XML。...提供的是对象-关系映射功能,也就是说,CoreData可以将Objective-C对象转换成数据,保存到SQL中,然后将保存后的数据还原成OC对象。...,才会刷新的值,其它不用修改,那么不用引用任何按钮,直接在回调时,就已经将接收响应的按钮给传过来了,直接通过修改即可。...精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。

1.2K30

iOS_Swift函数派发机制

如果被 override 的话,表里只会保存 override 后的函数。子类新增函数会被插到这个数组的最后,没有位置可以让 extension 安全的插入函数。...优点:可扩展 缺点:速度慢,编译器对某些含有副作用的函数无法优化 1.3 objc_msgSend 基于 Objc RunTime 实现,沿着实例的 isa 指针进行查找,找不到最后还有3次拯救机会。...详细可见:iOS_Objective-C 消息发送(消息查找 及 消息转发)过程 优点:最动态的方式,可以实现 KVO、UIAppearance 和 CoreData 等功能。...所以的方法调用(包括协议方法),都是静态派发的。...使用建议: 默认:编译器自己决定要不要使用 inline 进行优化 @inline(never):永远不要使用内敛优化。函数特别长且不想增大包体积时使用。

24820
领券