coredata 最简单例子

来源:互联网 发布:python 汉明距离 编辑:程序博客网 时间:2024/05/17 22:38

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