iOS coreData入门

eeec4 9年前

1.创建程序时勾选coredata

2.在core.xcdatamodeld文件中建立表User

使用时,先为User表创建modal类,继承自NSManagedObject


在AppDelegate中会有自动生成的几个属性用来数据库访问等


数据库增删改查过程:先将结果查询出来,在查询出来的结果上进行数据操作,最后再保存回去

1.增

User *user = [NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext:self.managedObjectContext];   // 返回插入的数据项      user.name = @"gaoxinchuan";    // 设置属性内容      user.age  = [NSNumber numberWithInt:6];            NSError *error = nil;      BOOL isSave =   [self.managedObjectContext save:&error]; // 保存即可      if (!isSave) {          NSLog(@"error:%@,%@",error,[error userInfo]);      }      else{          NSLog(@"保存成功");      }


2.删

// 实现原理      // 将结果查询出来,在查询出来的结果上操作,最后再保存回去      NSEntityDescription *description = [NSEntityDescription entityForName:@"User" inManagedObjectContext:self.managedObjectContext];        // 设置查询集合      NSFetchRequest *request = [[NSFetchRequest alloc] init];      [request setIncludesPropertyValues:NO];      [request setEntity:description];      NSError *error = nil;      NSArray *datas = [self.managedObjectContext executeFetchRequest:request error:&error]; // 进行查询      if (!error && datas && [datas count])      {          for (NSManagedObject *obj in datas)          {              [self.managedObjectContext deleteObject:obj];   // 删除数据项          }          if (![self.managedObjectContext save:&error])       // 保存最后结果,同步到数据库          {              NSLog(@"error:%@",error);          }      }


3.改

NSEntityDescription *description = [NSEntityDescription entityForName:@"User" inManagedObjectContext:self.managedObjectContext];      NSFetchRequest *request = [[NSFetchRequest alloc] init];      [request setIncludesPropertyValues:NO];      [request setEntity:description];      NSError *error = nil;      NSArray *datas = [self.managedObjectContext executeFetchRequest:request error:&error];      if (!error && datas && [datas count])      {          for (User *obj in datas)          {              obj.name = @"haizeiwang";     // 修改数据          }          if (![self.managedObjectContext save:&error])   // 同步到数据库          {              NSLog(@"error:%@",error);          }      }


4.查

//创建取回数据请求      NSFetchRequest *request = [[NSFetchRequest alloc] init];      request.predicate = [NSPredicate predicateWithFormat:@"name == @'gaoxinchuan'"];      //设置要检索哪种类型的实体对象      NSEntityDescription *entity = [NSEntityDescription entityForName:@"User"inManagedObjectContext:self.managedObjectContext];      //设置请求实体      [request setEntity:entity];      //指定对结果的排序方式      NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name"ascending:NO];      NSArray *sortDescriptions = [[NSArray alloc]initWithObjects:sortDescriptor, nil];      [request setSortDescriptors:sortDescriptions];      NSError *error = nil;      //执行获取数据请求,返回数组      NSMutableArray *mutableFetchResult = [[self.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];      if (mutableFetchResult == nil) {          NSLog(@"Error: %@,%@",error,[error userInfo]);      }      self.dataArray = mutableFetchResult;      for (User *dog in self.dataArray) {          NSLog(@"age:%@--name:%@",dog.age,dog.name);      }


5.可以设置查询条件:NSPredicate