CoreData使用笔记

1. 重要概念

1) Entity  (NSEntityDescription)

    对应数据库中的表  

NSEntityDescription  *userEntity  =  
[[[NSEntityDescription  alloc]  init]  autorelease];  
[userEntity  setName:@"User"]; 

2) Propery (NSAttributeDescription)

    Entity的列

NSAttributeDescription  *nameAttribute;  
nameAttribute  =  [[[NSAttributeDescription  alloc]  init]  autorelease];  
[nameAttribute  setName:@"name"];  
[nameAttribute  setAttributeType:NSStringAttributeType];  
[nameAttribute  setOptional:NO];  

把属性和表关联:

[userEntity  setProperties:  
[NSArray  arrayWithObjects:  dobAttribute,  nameAttribute,  nil]];  

2) Managed Object Model (NSManagedObjectModel)

    相当于数据库里的schema (什么是schema,请百度下)

3) Managed Object Context (NSManagedObjectContext)

    相当于数据库中的表

4) Managed Object

    相当于数据库的行。

5) Persistent Store coordinator

   

2. Core Data 的 CRUD操作

 1) Create

 例子:插入一条新的记录

-(BOOL)addUser:(NSString*)  _userName  dateOfBirth:(NSDate*)_dob  
    andSocial:(NSString*)_social
{ User
*user = (User *)[NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext:self.managedObjectContext]; user.dob = _dob; user.name = _userName; user.social = _social; return [self.managedObjectContext save:NULL]; }

 2) Delete

[self.managedObjectContext  deleteObject:user];  
[self.managedObjectContext  save:NULL];  

3) Read and update

   i) 无条件的Fetch

-(NSArray*)allUsers{  
    NSFetchRequest  *request  =  
    [[[NSFetchRequest  alloc]  init]  autorelease];  
    NSEntityDescription  *entity  =  
    [NSEntityDescription  entityForName:@"User" inManagedObjectContext:self.managedObjectContext];  
    [request  setEntity:entity];  
    return  [self.managedObjectContext executeFetchRequest:request  error:NULL];  
} 

   ii) 有条件的Fetch

-(NSArray*)usersWithNameQuery:(NSString*)_query
{ NSFetchRequest
*request = [[[NSFetchRequest alloc] init] autorelease]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:self.managedObjectContext]; [request setEntity:entity]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name like[cd] %@", [NSString stringWithFormat:@"*%@*", _query]]; [request setPredicate:predicate]; return [self.managedObjectContext executeFetchRequest:request error:NULL]; }

  iii) 排序Fetch

-(NSArray*)allUsersSorted
{ NSFetchRequest
*request = [[[NSFetchRequest alloc] init] autorelease]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:self.managedObjectContext]; [request setEntity:entity]; NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"dob" ascending:NO] autorelease]; [request setSortDescriptors: [NSArray arrayWithObject:sortDescriptor]]; return [self.managedObjectContext executeFetchRequest:request error:NULL]; }


 

 

 

 

 

posted @ 2012-08-16 16:45  老z的博客  阅读(1599)  评论(0)    收藏  举报