我们首先在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