我们一起学MAC编程吧(2) CoreData入门
来源:互联网 发布:淘宝厂家直销代理 编辑:程序博客网 时间:2024/05/12 15:46
关于Coredata,我已经看了几天了。看不不少别人写的文章,可以说,到今天为止,我仍未弄明白。
还是跟随苹果的例子来吧,看看能有什么发现。首先需要建立一种概念,Coredata是数据存储,它并不是真的数据库,因此它存储的主要内容是对象本身-想象一下nib文件就是Coredata数据,当然它也可以用来保存纯数据。
1. Coredata 模型
如果你学过数据库,或者哪怕是foxpro,你对数据库就有了一个粗略的印象。数据库是由一个或多个表组成的,所谓的CoreData模型,你可以理解成数据库,你也可以建立多个表--这里称为 entity,他们有字段,这里叫做属性,每个属性有类型信息--它似乎没有字段长度的感念,管它呢。比如SQL Sever, CoreData的不同之处,在于它将那些表的定义单独提出来了,构成一个扩展名为xcdatamodeld的文件。你可以在IB里面编辑它,也可以编程来处理。
要得到保存在文件中的CoreData数据,第一步要做的就是调入模型,调入也好,编程动态建立也好。负责模型的这个类是:NSManagedObjectModel,需要有一个这样的对象,对模型进行管理。
接下来,建立一个存放数据的类,。这个类的类名是NSManagedObjectContext,也就是说,如果从一个已经存在的CoreData数据文件,得到数据,数据将从文件调入,并保存在NSManagedObjectContext的类对象里面。看看下面的例子。
int main (int argc, const char * argv[]) {
NSManagedObjectModel *mom = managedObjectModel();
NSLog(@"mom: %@", mom);
if (applicationLogDirectory() == nil) {
NSLog(@"Could not find application logs directory\nExiting...");
exit(1);
}
NSManagedObjectContext *moc = managedObjectContext();
NSEntityDescription *runEntity = [[mom entitiesByName] objectForKey:@"Peoples"];
Person *person = [[Person alloc] initWithEntity:runEntity insertIntoManagedObjectContext:moc];
person.personID = @“123”;
person。name= @“wang”;
NSError *error;
if (![moc save: &error]) {
NSLog(@"Error while saving\n%@",
([error localizedDescription] != nil) ? [error localizedDescription] : @"Unknown Error");
exit(1);
}
return 0;
}
这段代码相当受启发。为了理解方便,上面的代码我改动了一点内容。它的主要作用是,首先,建立一个NSManagedObjectModel对象。然后建立管理内容数据的类: NSManagedObjectContext,并且为这个对象建立模型(也就是表定义),这样它才知道能够处理什么样的数据,我们这里是Person。
接下来,程序建立了一个Person 对象, 并设定了必要的属性。 insertIntoManagedObjectContext:moc 将这个新建的Pseson插入到内容对象里面,内容对象因此有了内容。最后,将内容文件的内容保存,形成有数据的CoreData文件。
至于上面的程序是否正确,文件存到哪里去了。我们以后再探讨。这一节,我们毕竟弄明白了一个基本的机制, NSManagedObjectModel和 NSManagedObjectContext对象的作用。
这一节内容有点少,但是并不单薄, 我希望你自己去找资料看看。CoreData毕竟太重要了,无论你做了什么总要保存吧。下一个节我会尝试做一个例子,来演示CoreData的处理过程。
- 我们一起学MAC编程吧(2) CoreData入门
- 我们一起学MAC编程吧(1)
- 我们一起学Mac编程吧(3)场景菜单与OutLineView图标
- 跟我一起学MAC编程吧(4) 浮动工具窗
- 跟我一起学MAC编程吧(5) - 显示尺子
- 一起学编程(2--认识世界)
- 那些年,我们一起学过的编程语言
- 这些年我们一起学过的编程语言
- 一起学编程(1)
- 我们一起学python-helloworld
- 我们一起学python-helloworld2
- 那些年,我们一起学WCF--(2)wcf服务契约
- 我们一起学 ABAP (01) ~ 初识SAP ABAP
- 我们一起学 ABAP (01) ~ 初识SAP ABAP
- 我们一起学ABAP(05)~流程控制
- 与孩子一起学编程2
- 一起学编程(5--流程)
- 一起学并发编程
- 蓝桥杯校内选拔赛
- vbox虚拟机ubuntu与windows设置目录共享
- 一个删除并且插入的事务问题
- ListView的用法
- fatal error C1083: 无法打开预编译头文件:“Debug\*.pch”: No such file or directory
- 我们一起学MAC编程吧(2) CoreData入门
- 冒险商人ver1.0开发文档
- 解决Ubuntu下切换到root用户后没有声音问题
- 设计模式之创建者模式 c++ 实现
- HDU 4190 二分
- 使用 Windows 钩子获取丢失的密码
- Entropy hdu1053 哈夫曼树
- DEDECMS列表页TITLE标题优化方法-SEO优化方法
- 黑马程序员_java jdk5.0新特性和枚举的学习笔记