CoreData

<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>






                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值