iOS:Core Data 中的简单ORM
我们首先在xcdatamodel文件中设计我们的数据库:例如我建立一个Data的实体,里面有一个String类型的属性name以及一个Integer类型的num:
然后选中Data,添加文件,选择NSManagedObject subclass类型:
xcode就会自动帮我们的数据库自动映射出对象了,生成Data.h Data.m文件,Data为 NSManagedObject派生的子类,
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h> @interface Data : NSManagedObject @property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * num; @end
#import "Data.h" @implementation Data @dynamic name;
@dynamic num; @end
我们在需要用到存储CoreData的地方,直接使用Data对象就行,当然,你需要import Data.h 先,例如我demo的代码:
-(void) saveDataWithName:(NSString *) Name andNum:(int ) Num{
AppDelegate *appDelegate=[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = appDelegate.managedObjectContext;
//save Data
Data *data = [NSEntityDescription insertNewObjectForEntityForName:@"Data" inManagedObjectContext:context];
data.name = Name;
data.num = [NSNumber numberWithInt:Num];
[appDelegate saveContext]; //get Data
NSError *error;
NSFetchRequest *request=[[NSFetchRequest alloc] init];
NSEntityDescription *entity=[NSEntityDescription entityForName:@"Data" inManagedObjectContext:context];
[request setEntity:entity]; NSArray *results=[[context executeFetchRequest:request error:&error] copy]; for (Data *d in results) {
NSLog(@">> date.name: %@ data.num: %i",d.name,[d.num intValue]);
}
}
其实之前的做法(iphone开发中的数据存储:Core Data)是直接使用NSManagedObject对象去存取,现在则把它映射到对应对象里面,当然在数据库复杂的时候,其好处会体现出来。
简单的ORM in iOS就是这些。
参照:http://marshal.easymorse.com/archives/3377
iOS:Core Data 中的简单ORM的更多相关文章
- 在 Core Data 中存取 transformable 类型的数据
本文转载至 http://imenjoe.com/2015/04/10/CoreData-transformable-20150410/ 在开发过程中有一个需要在 Core Data 中存取 NSDi ...
- iOS Core data多线程并发访问的问题
大家都知道Core data本身并不是一个并发安全的架构:不过针对多线程访问带来的问题,Apple给出了很多指导:同时很多第三方的开发者也贡献了很多解决方法.不过最近碰到的一个问题很奇怪,觉得有一定的 ...
- iOS: Core Data入门
Core Data是ORM框架,很像.NET框架中的EntityFramework.使用的基本步骤是: 在项目属性里引入CoreData.framework (标准库) 在项目中新建DataModel ...
- 再看Core Data中PSC陷入死锁的问题
在<Core Data Programming Guide>文档的Concurrency with Core Data这一章节中提到了“Use Thread Confinement to ...
- IOS - CORE DATA的目录(xcode6)
当使用coredata作为app的后台数据存储介质后,我们很想知道数据是否成功插入.为此,我想找到coredata.sqlite的文件 代码中指定的存储目录为: - (NSURL *)appli ...
- 在ASP.NET Core MVC中构建简单 Web Api
Getting Started 在 ASP.NET Core MVC 框架中,ASP.NET 团队为我们提供了一整套的用于构建一个 Web 中的各种部分所需的套件,那么有些时候我们只需要做一个简单的 ...
- iOS Core Data 数据库的加密(待研究)
https://github.com/project-imas/encrypted-core-data 使用起来很方便,底层还是使用了SQLCipher,有时间要研究一下! 数据库的密码不能用固定字符 ...
- iOS开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】
在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运 ...
- ios开发:Core Data概述
Core Data 概述 2005年的四月份,Apple 发布了 OS X 10.4,在这个版本中 Core Data 框架发布了.Core Data本身既不是数据库也不是数据库访问框架.相反,Cor ...
随机推荐
- 打开Mac OSX原生的NTFS功能
插上磁盘 从finder或者使用以下命令查看到磁盘的Volume Name: diskutil list /dev/disk0 #: TYPE NAME SIZE IDENTIFIER 0: GUID ...
- Byte[]分配在哪里?
http://stackoverflow.com/questions/1113819/arrays-heap-and-stack-and-value-types Your array is alloc ...
- Editor.md的安装使用(MarkDown)
1.官网下载:http://pandao.github.io/editor.md/ 2.使用例子: <!DOCTYPE html> <html lang="zh-cn&qu ...
- spring junit4 测试
@Service @ContextConfiguration(locations = { "classpath:config/applicationContext.xml" }) ...
- windows下Redis主从复制配置(报错:Invalid argument during startup: unknown conf file parameter : slaveof)
主从复制配置中的遇到的异常: Invalid argument during startup: unknown conf file parameter : slaveof 把Redis文件夹复制两份 ...
- org.springframework.dao.DuplicateKeyException: a different object with the same identifier value was
在使用hibernate框架里面的:saveOrUpdate报错: 意思就是另一个对象的id(id同值)已经被session关联了. 原因分析: 在第1步中中通过titleList.get(0)获取一 ...
- 09_MySQL DQL_SQL99标准中的多表查询(外连接)
# 二.外连接/* 场景:查询值在1个表中出现,在另外1个表中没有出现 特点: 0.也是两张表的字段拼接,分为主表和从表 1.外连接的结果,将显示主表中的所有记录行 如果连接字段在从表中有记录,则显示 ...
- select * from table_name where 1=1的
我们先来看看这个语句的结果:select * from table where 1=1,其中where 1=1,由于1=1永远是成立的,返回TRUE,条件为真:所以,这条语句,就相当于select * ...
- 查看linux 之mysql 是否安装的几种方法
转自:https://jingyan.baidu.com/album/86112f1378bf282737978730.html?picindex=2 linux下怎么启动mysql服务 https: ...
- c# 计算中文字节数与JAVA不符的解决方法
c# 中方法 string str = "中华人民共和国"; int strLen = System.Text.Encoding.Default.GetByteCount(str) ...