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

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

为了写这个系列,还专门买来了objc.io的CoreData这本书。读完之后受益匪浅。 这个系列要写多少篇还没有想好,大概也还是会基本到高级的一个过渡。 第一篇通过一个通讯录实现数据库的读取。...CoreData的基本读取操作 2. 1 获取CoreData已经保存数据的五个步骤 获取总代理和托管对象总管 Entity获取一个fetchRequest 根据fetchRequest,managedContext...保存过程中可能会出错,要做一下处理。 添加到数组中 2.2 基本存储 获取总代理和托管对象总管 建立一个Entity 保存内容 保存Entity到托管对象。...3.1 Xcode创建默认带数据库的工程 image.png 在 Xcode 创建工程,提供了创建 CoreData 的模板,只需要我们在创建,勾选 CoreData 选项,Xcode 就会自动创建出数据模型文件...do { let fetchedResults = try managedObectContext.fetch(fetchRequest) as?

1.7K40

【IOS开发高级系列】CoreData专题

Managed Object Model 是描述应用程序的数据模型,这个模型包含实体(Entity),特性(Property),读取请求(Fetch Request)等。...Typically, you define fetch request templates using the Xcode data modeling tool (see Xcode Tools for...NSPersistentStore ,然后执行一段时间后返回一个数组,在 NSManagedObjectContext 更新后,这个数组被当做executeFetchRequest:error: 的返回值返回到我们这里...它有点像NSFetchRequest :它允许你指定一个想要更新数据的实体;也可以指定一个affectedStores ,它存储了一个接受更新请求的 NSPersistentStore 数组。...一旦有非法数据录入数据库,下次加载并修改 NSManagedObject 的时候就会导致数据验证失败。

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

详解持久化Core Data框架的原理以及使用---转自Bison的技术博客

当开发者使用Xcode的图形界面设计了实体与实体的关联关系之后,需要使用该对象来加载、管理应用的托管对象模型。...实体描述NSEntityDescription:该对象代表了关于某个实体的描述信息,某种程度来说,该对象相当于实体的抽象。...创建NSManagedObiectModel对象来加载管理应用的托管对象模型。...Entity将会显示Add Entity、Add Fetch Request、Add Configuration列表,可供选择添加实体、抓取请求、配置。...coredata03.png 然后单击Xcode主菜单的Editor-->Create NSManagedObject Subclass菜单项,如果系统包含俩个以上的实体,Xcode将会弹出一个对话框让选择腰围哪些实体生成

1.4K50

iOS本地数据存储

Xcode编译运行的时候,会把Xcode内的图片、xib、音频等都拷贝到.app文件中。 NSBundle就是系统提供,用来读取这些资源的类。...根据这个表结构,先选中CoreData的模型文件,在Xcode的Editor有Create NSManagedObject Subclass的选项,选中后会自动生成类的代码,如下: @interface...的具体使用: //本地加载对象模型 NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"LearnCoreData" ofType...尝试把CDUser+CoreDataProperties.mcompile source中移除,工程中仍保留CDUser+CoreDataProperties.h文件,结果编译可以通过。...名字上可以得知,这也是CoreData自动生成! 经过一番搜索,终于找到CoreData对应的设置。 ? 附录 苹果官方文档-File System Programming Guide

2.9K20

Core Data 基础

问题描述: 使用xcode8.3创建项目,使用CoreData 建立好coreData模型后,生成文件后。报如下错误。提示没有引入文件。 查阅资料&综合调试,无法正面解决问题。...(局限于cc老师的Xcode。用同事的电脑操作没有相关问题) 解决方案: 1.使用xcode7.1创建项目,生成CoreData模型以及文件后,再使用Xcode8.3打开项目,编译通过。...保存对数据的操作 —— 数据库中删除 二、简介CoreData数据存储 Core Data 是 iOS SDK 里的一个很强大的框架,允许程序员以面向对象的方式储存和管理数据 Core Data...问题描述: 使用xcode8.3创建项目,使用CoreData 建立好coreData模型后,生成文件后。报如下错误。提示没有引入文件。 查阅资料&综合调试,无法正面解决问题。...(局限于cc老师的Xcode。用同事的电脑操作没有相关问题) 解决方案: 1.使用xcode7.1创建项目,生成CoreData模型以及文件后,再使用Xcode8.3打开项目,编译通过。

85330

「死磕」Core Data——入门

其他 Optional:「实体特性」的配置选项(勾选了之后,表示这个特征可为nil) Transient:「实体特性」的配置选项(勾选了之后,该属性不会保存到沙盒中) Fetch Requset。...(Xcode8) 在AppDelegate.h文件 #import // 导入了CoreData框架 #import @interface...不直观,敲字符串也容易出错。所以,我们通常都会创建NSManagedObject的子类,用点语法直接进行存取操作。...这时候,身高的Sort Descriptor放在数组前面,名字的Sort Descriptor放在数组后面。...如果要大批量修改数据,将数据沙盒加载到内存,再进行修改,不利于性能,所以可以使用NSBatchUpdateRequest 、NSBatchDeleteRequest,进行批量的修改或者删除。

1.1K20

Swift实践:使用CoreData存储多种数据类的通讯录1. CoreData支持存储数据类型2. 使用CoreData存储多种数据类的通讯录3. Codable

1.2 Decimal Decimal为SQL Server、MySql等数据库的一种数据类型,不属于浮点数类型,可以在定义划定整数部分以及小数部分的位数。...image.png 2.1 CoreData的基本读取操作 2. 1.1 获取CoreData已经保存数据的五个步骤 获取总代理和托管对象总管 Entity获取一个fetchRequest 根据fetchRequest...,managedContext中查询数据 保存。...保存过程中可能会出错,要做一下处理。 添加到数组中 2.1.2 基本存储 获取总代理和托管对象总管 建立一个Entity 保存内容 保存Entity到托管对象。...下一篇我们就不能再用Xcode创建自带的CoreData来搞事情了,我们要自己搞一个CoreData Stack来实现管理。

2K30

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

我在控制台中看到了一些神秘的消息,例如“创建与 PPT 通信所需的 CFMessagePort 出错”。如果我说尝试进行数据共享,如果 CKShare 不存在,它可以工作 - 万岁!...例如,符合 Transferable 的结构中共享 URL 实例根本不起作用。 ShareLink 只是显示一个的弹出窗口( 另一个开发者的吐槽 )。...当存储获取数据,这两个选项是否都会被加载到内存中?或者支持懒加载( fault )?不确定哪个更好用。A:两者会有相同的内存状况。理想情况下的答案是“两者都不是好的选择” 。...另一种方法是通过获取请求fetch request )确定对象是否已经存在,如果存在,则更新现有记录,如果不存在则创建新记录。在 Apple 看来,哪种方式是处理记录创建和更新的首选方式?...A:或许可以尝试一下 ANY tag.name IN %@。%@ 对应的是标签数组。应该用 Core Data 的逻辑来组织数据并创建谓词,Core Data 会将谓词转换成对应的 SQL 语句。

2.8K20

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

•-com.apple.CoreData.CloudKitDebugCloudKit调试信息输出级别,1开始,数字越大信息愈详尽•-com.apple.CoreData.SQLDebugCoreData...•-com.apple.CoreData.MigrationDebug迁移调试启动参数将使您在控制台中了解迁移数据的异常情况。...同步不正常 当网络同步不正常,请先尝试做以下检查: •网络连接是否正常•设备是否已登录iCloud账户•同步私有数据库的设备是否登录的是同一个iCloud账号•检查日志,是否有错误提示,尤其是服务器端的...利用类似如下的代码,尝试给用户提供一点提示。...但如果对NSPersistentCloudKitContainer加载的store调用此方法,则必须强制退出应用程序后再次进入方可正常使用(虽然数据库文件被转移,但迁移后会告知加载CloudKit container

63830

iOS开发之表视图爱上CoreData

在接触到CoreData,感觉就是苹果封装的一个ORM。...(和JavaBean类似)     (1)AppDelegata.m中多出的部分代码如下,多出的部分代码就可以看出,CoreData会把我们的数据实体和sqllite建立起一一对应的关系: 1 2 3...来修改或着添加数据,TableView上的内容是不跟着CoreData的变化而变化的,接下来要做的就是要绑定TableView和CoreData的关系。...1.把更新页面删掉,做如下修改,点击添加和修改都跳转到我们的编辑页面,同时添加一个自定义Button,点击Button,我们会调用ImagePickerController来手机相册获取图片: ?...3.在之前保存的ViewController中如果Person为,说明是执行的添加记录的方法我们就生成一个新的person, 如果Person不为则不新建Person对象,直接更新完保存。

2.1K80

如何在Xcode下预览含有Core Data元素的SwiftUI视图

如何在Xcode下预览含有Core Data元素的SwiftUI视图 SwiftUI诞生之日起,预览(Canvas Preview )一直是个让开发者又爱又恨的功能。...预览模拟器不支持控制台输出显示、不支持断点调试,即使在动态预览模式下(支持交互的预览模式),我们也不会在Xcode中获得任何代码中的控制台输出内容。因此在预览发生问题,用于排查故障的手段很有限。...有时需要重启Xcode甚至重启系统才会恢复正常 SwiftUI下的Core Data SwiftUI App life cycle Xcode 12开始,开发者可以在Xcode中使用SwiftUI原生的应用程序生命周期创建项目...当App执行出错后,所有的视图都不能正常预览。...context) item.timestamp = Date().addingTimeInterval(30000000) return item }} 内存数据库 Xcode

5.1K10

【IOS】IOS开发问题解决方法索引(五)

13.1 Batch Updates 在CoreData中想要更新大量数据,我们往往要将大量修改后的NSManagedObject 加载到 NSManagedObjectContext 中并保存,这会占用大量内存...它有点像NSFetchRequest :它允许你指定一个想要更新数据的实体;也可以指定一个affectedStores ,它存储了一个接受更新请求的 NSPersistentStore 数组。...一旦有非法数据录入数据库,下次加载并修改 NSManagedObject 的时候就会导致数据验证失败。...NSPersistentStore ,然后执行一段时间后返回一个数组,在 NSManagedObjectContext 更新后,这个数组被当做executeFetchRequest:error: 的返回值返回到我们这里...//获取当前日(1-31) myDate.getDay(); //获取当前星期X(0-6,0代表星期天) myDate.getTime(); //获取当前时间(1970.1.1

84820

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

设计valueForUndefinedKey:方法的主要目的是当你使用-(id)valueForKey方法对象中请求,对象能够在错误发生前,有最后的机会响应这个请求。...:无需动手写SQL语句,在获取请求fetch request)中关联NSPredicate。...OC中是否有二维数组,如何实现二维数组 OC中没有二维数组,可通过嵌套数组实现二维数组。 LayoutSubViews在什么时候被调用? 当View本身的frame改变,会调用这个方法。...gzip/zip压缩:当服务端下载相关附件,可以通过gzip/zip压缩后再下载,使得内存更小,下载速度也更快。 延迟加载:对于不应该使用的数据,使用延迟加载方式。...对于不需要马上显示的视图,使用延迟加载方式。比如,网络请求失败显示的提示界面,可能一直都不会使用到,因此应该使用延迟加载

1.1K20

iOS,面试必看,最全梳理

设计valueForUndefinedKey:方法的主要目的是当你使用-(id)valueForKey方法对象中请求,对象能够在错误发生前,有最后的机会响应这个请求。...:无需动手写SQL语句,在获取请求fetch request)中关联NSPredicate。...OC中是否有二维数组,如何实现二维数组 OC中没有二维数组,可通过嵌套数组实现二维数组。 LayoutSubViews在什么时候被调用? 当View本身的frame改变,会调用这个方法。...gzip/zip压缩:当服务端下载相关附件,可以通过gzip/zip压缩后再下载,使得内存更小,下载速度也更快。 延迟加载:对于不应该使用的数据,使用延迟加载方式。...对于不需要马上显示的视图,使用延迟加载方式。比如,网络请求失败显示的提示界面,可能一直都不会使用到,因此应该使用延迟加载

1.1K30
领券