coredata 最简单例子

来源:互联网 发布:android源码 小米商城 编辑:程序博客网 时间:2024/04/30 15:33
  1. 先按照网上的教程,建一个简单的带coredata的项目  
  2. 再 添加一个 UserInfo 对象(表)(按照网上的教材,可视化方式添加)  
  3.   
  4. 然后在AppDelegate.m中按如下修改,(只添加了4个方法)  
  5.   
  6. 然后运行,看控制台日志  
  7.   
  8.   
  9. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
  10. {  
  11.     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];  
  12.     // Override point for customization after application launch.  
  13.     self.window.backgroundColor = [UIColor whiteColor];  
  14.     [self.window makeKeyAndVisible];  
  15.           
  16.     [self addUser];         
  17.     [self gainDatas];  
  18.       
  19.     return YES;  
  20. }  
  21. //添加  
  22. -(void)addUser{  
  23.     UserInfo * userInfo  = [NSEntityDescription insertNewObjectForEntityForName:@"UserInfo"   
  24.                                                          inManagedObjectContext:self.managedObjectContext];      
  25.     userInfo.name = @"dage";  
  26.     userInfo.password = @"password3";  
  27.     NSError *error = nil;  
  28.     if (![self.managedObjectContext save:&error]) {          
  29.         NSLog(@"Unresolved error %@, %@", error, [error userInfo]);  
  30.         abort();  
  31.     }  
  32.       
  33.     NSLog(@"add success");  
  34.       
  35. }  
  36. //查询  
  37. -(void)gainDatas {      
  38.     NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];  
  39.     [fetchRequest setEntity:[NSEntityDescription entityForName:@"UserInfo" inManagedObjectContext:self.managedObjectContext]];  
  40.       
  41.     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name like[cd]'baobao'"];//查询条件  
  42.     // NSPredicate *predicate = [NSPredicate predicateWithFormat:@"password='password3'"];//查询条件  
  43.       
  44.     NSMutableArray *sortDescriptors = [NSMutableArray array];    //排序用  
  45.     [sortDescriptors addObject:[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES] ];  //排序用  
  46.       
  47.     [fetchRequest setPredicate:predicate];  //查询条件  
  48.     [fetchRequest setFetchBatchSize:5];     //分页    
  49.     [fetchRequest setSortDescriptors:sortDescriptors];  //排序  
  50.     [fetchRequest setReturnsObjectsAsFaults:NO];  
  51.     [fetchRequest setPropertiesToFetch:[NSArray arrayWithObjects:@"name", @"password", nil]];  //查询的字段,一般不需要  
  52.     NSError *error = nil;  
  53.     NSArray *fetchedItems = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];  
  54.     if (fetchedItems == nil) {  
  55.         NSLog(@"fetch request resulted in an error %@, %@", error, [error userInfo]);  
  56.     }else {  
  57.         NSLog(@"fetchedItems=%d",fetchedItems.count);  
  58.         for (UserInfo *user in fetchedItems) {  
  59.             NSLog(@"user.authour=%@",user.name);  
  60.             // [self deleteUser:user];  //删除              
  61.             // [self updateUser:user];  //更新  
  62.         }  
  63.     }      
  64. }  
  65. //删除:NSManagedObject对象必须先取出来,用managedObjectContext删除,保存就好  
  66. -(void)deleteUser:(id)user{  
  67.     [self.managedObjectContext deleteObject:user];    
  68.     NSError *error = nil;  
  69.     if (![self.managedObjectContext save:&error]) {          
  70.         NSLog(@"Unresolved error %@, %@", error, [error userInfo]);  
  71.         abort();  
  72.     }  
  73.       
  74.     NSLog(@"delete success");      
  75. }  
  76. //更新:直接修改对象,保存managedObjectContext就好  
  77. -(void)updateUser:(UserInfo*)user{  
  78.     user.name = @"baobao";   //修改后,直接保存managedObjectContext就可以了   
  79.     NSError *error = nil;  
  80.     if (![self.managedObjectContext save:&error]) {          
  81.         NSLog(@"Unresolved error %@, %@", error, [error userInfo]);  
  82.         abort();  
  83.     }  
  84.       
  85.     NSLog(@"update success");      
  86. }  
原创粉丝点击