关于Core Data的一些整理(二)

关于Core Data的一些整理(二)

创建NSManagedObject的子类时,有一点是在这中间要强调的一点是,要不要勾选 Use scalar properties for primitive data types。

勾选上这个选项之后就是使用的是你在定义的时候使用的原始数据类型。

如果没有勾选的话,就会存在类型的转化,转换情况如下:

  • String maps to String
  • Integer 16/32/64, Float, Double and Boolean map to NSNumber
  • Decimal maps to NSDecimalNumber
  • Date maps to NSDate
  • Binary data maps to NSData
  • Transformable maps to AnyObject

之后生成四个文件如下:

上面两个负责数据属性部分,下面两个负责数据操作部分

若在使用中修改了Core Data文件,重新创建子类即可,新生成的文件只有上面两个并覆盖原来的文件,下面的数据操作部分并不会新建

代码需要注意的地方不多,有下面两点:

  • 为NSFetchRequest添加NSPredicate条件
1 //建立匹配请求,并添加判断语句
2   NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Bowtie"];
3   NSString *firstTitle = [self.segmentedControl titleForSegmentAtIndex:0];
4   request.predicate = [NSPredicate predicateWithFormat:@"searchKey == %@", firstTitle];
5   NSArray *results = [self.managedContext executeFetchRequest:request error:nil];
6   self.currentBowtie = results.firstObject;
  • 保存图片时可以选择Allows External Storage,你数据库内存的就不是图片,而是图片在你文件夹内的路径

1   //对图片保存进行处理
2   NSEntityDescription *entity = [NSEntityDescription entityForName:@"Bowtie" inManagedObjectContext:self.managedContext];
3   Bowtie *bowtie = [[Bowtie alloc] initWithEntity:entity insertIntoManagedObjectContext:self.managedContext];
4   bowtie.photoData = UIImagePNGRepresentation([UIImage imageNamed:dict[@"imageName"]]);
时间: 2024-12-23 09:33:47

关于Core Data的一些整理(二)的相关文章

关于Core Data的一些整理(三)

关于Core Data的一些整理(三) 关于Core Data Stack的四种类与它们的关系如下: NSManagedObjectModel NSPersistentStore NSPersistentStoreCoordinator NSManagedObjectContext 手写Core Data Stack,新建文件继承NSObject,并且在其中要依次初始化三个对象:NSManagedObjectContext.NSPersistentStoreCoordinator.NSManag

关于Core Data的一些整理(一)

关于Core Data的一些整理(一) 在Xcode7.2中只有Mast-Debug和Single View中可以勾选Use Core Data 如果勾选了Use Core Data,Xcode会自动在AppDelegate中帮你生成Core Data的核心代码,并且自动生成.xcdatamodeld数据文件 1 //Appdelegate.h中 2 #import <UIKit/UIKit.h> 3 #import <CoreData/CoreData.h> 4 5 @inter

Core Data的使用(二)备

一.基础概念深入 1.NSManagedObjectContext 被管理数据上下文就像便笺簿 当从数据持久层获取数据时,相当于把这些临时的数据拷贝写在便笺簿上,然后就可以随心所欲的修改这些值. 通过上下文,可以对数据记录NSManagedObject进行添加删除更改,记录更改后支持撤销和重做. 除非你保存这些数据变化,否则持久层的东西是不会变化. 通常我们将 controller 类或其子类与 Managed Object Context NSManagedObjectContext绑定,这样

Core Data 学习简单整理01

Core Data是苹果针对Mac和iOS平台开发的一个框架, 通过CoreData可以在本地生成数据库sqlite,提供了ORM的功能,将对象和数据模型相互转换 . 通过Core Data管理和操作. 能够快速达到项目的存储数据的需求. CoreData优点:能够合理管理内存,避免使用sql的麻烦,高效, 由于是苹果提供的解决方案, 所以不用太过担心会有其他问题. 我的观念就是先使用上了后再考虑其他, 问题有一个就解决一个. Core Data 默认使用Sqlite. 因此在沙盒Documen

iphone数据存储之-- Core Data的使用(二)

一.基础概念深入 1.NSManagedObjectContext 被管理数据上下文就像便笺簿 当从数据持久层获取数据时,相当于把这些临时的数据拷贝写在便笺簿上,然后就可以随心所欲的修改这些值. 通过上下文,可以对数据记录NSManagedObject进行添加删除更改,记录更改后支持撤销和重做. 除非你保存这些数据变化,否则持久层的东西是不会变化. 通常我们将 controller 类或其子类与 Managed Object Context NSManagedObjectContext绑定,这样

ios开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】

               在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运用: 在本节,将通过对4个文本框内容的创建.修改,退出后台,再重新回到后台,来认识这两种持久化数据的方式.效果图如下[图1]: [图1 GUI界面效果图] [本次开发环境: Xcode:7.2     iOS Simulator:iphone6S plus   By:啊左]     一.数据库SQL

Core Data中的多线程之二

在Core Data中使用多线程一般不是为了能够提高性能和效率,而是为了使主线程能够不被阻塞,使能够在做其他数据操作的时候,UI还能够继续响应用户的行为.当执行fetch操作时,Core Data系统会根据需要自动开启多个线程做相应的操作,因此我们自己添加多线程并不能提高效率,而仅仅是为了能够将主线程丛繁重的数据操作中解脱出来. 苹果官方文档中对Core Data并发操作的说明: Concurrency with Core Data: 1.Use Thread Confinement to Su

Core Data存储自定义类型数据

目录: 一.使用CoreData存储基本数据 二.使用CoreData存储自定义类型数据 简单介绍CoreData CoreData是iOS编程中使用持久化数据存储的一种方式,我们知道CoreData并不是数据库本身,而是Apple提供的对象持久化技术--Object Persistent technology.CoreData框架为我们的数据变更.管理.对象存储.读取和恢复提供了支持.下面我们来尝试创建一个简单的CoreData Project. 操作 1. 打开x-code,为你的proje

Core Data-备用

Core Data是一个功能强大的层,位于SQLite数据库之上,它避免了SQL的复杂性,能让我们以更自然的方式与数据库进行交互.Core Data将数据库行转换为OC对象(托管对象)来实现,这样无需任何SQL知识就能操作他们. Core Data位于MVC设计模式中的模型层,一般需要在设备上存储结构化数据时,考虑使用SQLite或是序列化等方法,而Core Data是这两种方法的混合体,并增加了一些功能,提供了SQL强大威力,但是用起来又和序列化一样简单.Core Data能将应用程序中的对象