一、Core Data
解析:Core Data的作用就是相当于java中的Hibernate,也就是对象持久化技术到数据库中。
注: 一:在项目创建时,需要点击 Use Core Data这样就会生成一个__.xcdatamodeld的持久化模型文件,相等于数据库中的表。二:在__.xcdatamodeld中添加了字段后,需要点击该字段,把系统默认勾上的Optional去掉。三:在对表数据赋值的时候其实使用的是KVC赋值模式[mosetValue:nameforKey:@"name"];
四:持久化数据库步骤基本如下:
增的语句:
1:获得应用程序代理对象(注:因为系统自动生成的内容在AppDelegate中所存在。而本项目只有这么一个文件,所以直接使用代理模式。)
AppDelegate * app = [UIApplicationsharedApplication].delegate;
2:获得托管上下文对象,代表着数据库,只要我们在xcdatamodeld文件中插入字段,那么这里将会自动创建数据库文件。
NSManagedObjectContext * context = app.managedObjectContext;
3: 定义一个托管的对象 . 代表着数据库表中的数据NSManagedObject * mo = [NSEntityDescriptioninsertNewObjectForEntityForName:@"Student"inManagedObjectContext:context];
4:指定实体中的值(注:使用键值对的KVC模式)
[mo setValue:nameforKey:@"name"];
5:把托管对象放到上下文中[context insertObject:mo];
6:保存上下文,如果没有该步骤,那么就只是在内存中给修改而已,数据库是没有变化的。
if ([contextsave:&err]) {
NSLog(@"%@", [errdescription]);
}
查的语句:
/*指定条件的查询,其实只是加多了一个谓词(谓词就是定制一个条件) */
//一:获得应用程序代理对象
AppDelegate * app = [UIApplicationsharedApplication].delegate;
//二:获得托管上下文对象,代表着数据库,只要我们在xcdatamodeld文件中插入字段,那么这里将会自动创建数据库文件。
NSManagedObjectContext * context = app.managedObjectContext;
//三:指定一个实体,实体指的是表
NSEntityDescription * entity = [NSEntityDescriptionentityForName:@"Student"inManagedObjectContext:context];
//四:创建一个查询
NSFetchRequest * request = [[NSFetchRequestalloc ]init];
[request setEntity:entity];
//五:创建一个查询的谓词
NSPredicate * predicate = [NSPredicatepredicateWithFormat:@"(age = %d)",22];
//六:把谓词添加到查询中
[request setPredicate:predicate];
//七:运行一个查询,返回的是托管对象
NSError * err =nil;
NSArray * resultobjects = [contextexecuteFetchRequest:request error:&err];
//八:遍历结果数组。
if (resultobjects) {
for (NSManagedObject * moin resultobjects) {
NSLog(@"name = %@, age = %@", [movalueForKey:@"name"],[movalueForKey:@"age"] );
}
//九:保存上下文到数据库
if ([context save:&err]) {