<pre name="code" class="objc"><span style="font-size:18px;">当创建工程时勾选UseCoreData之后,xcode自动在Appdelegate中定义一个NSManagedObjectContext对象
这个方法是为了获取到context对象,我们一会儿要用到context来保存设备数据</span>
<h1>获取管理对象上下文的方法</h1><span style="font-size:18px;">-(NSManagedObjectContext *)managedObjectContext{
NSManagedObjectContext *context = nil;
id delegate = [UIApplication sharedApplication].delegate;
if ([delegate performSelector:@selector(managedObjectContext)]) {
context = [delegate managedObjectContext];
}
return context;</span>
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size:18px;">}</span></span><h1>将数据保存在创建的Entity中</h1><pre name="code" class="objc">/<span style="font-size:18px;">//保存数据
- (IBAction)saveButtonClick:(id)sender {
//获取上下文
NSManagedObjectContext *context = [self managedObjectContext];
//创建一个新的NSManagedObject对象
NSManagedObject *object = [NSEntityDescription insertNewObjectForEntityForName:@"Device" inManagedObjectContext:context];
[object setValue:name.text forKey:@"name"];
[object setValue:company.text forKey:@"company"];
[object setValue:version.text forKey:@"version"];
NSError *error = nil;
//存储对象在持久存储
if (![context save:&error]) {
NSLog(@"Can't Save! %@ %@",error,[error localizedDescription]);
}
[self dismissViewControllerAnimated:YES completion:nil];
}</span>
在viewDidAppear中获取数据并刷新tableView
<span style="font-size:18px;">-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
//从持久数据存储中获取devices
NSManagedObjectContext *context = [self managedObjectContext];
//取出数据
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]initWithEntityName:@"Device"];
self.devices = [[context executeFetchRequest:fetchRequest error:nil] mutableCopy];
//刷新表数据
[self.tableView reloadData];
}</span>
<span style="font-size:18px;">
</span>
<pre name="code" class="objc"><span style="font-size:18px;">- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
//1.先获取managedObject对象
NSManagedObject *managedObject = [self.devices objectAtIndex:indexPath.row];
//2.用valueForKey: 取出数据
[cell.textLabel setText:[NSString stringWithFormat:@"%@ %@",[managedObject valueForKey:@"name"],[managedObject valueForKey:@"version"]]];
cell.detailTextLabel.text = [managedObject valueForKey:@"company"];
return cell;
}</span>