如何更改核心数据中的记录值

Posted

技术标签:

【中文标题】如何更改核心数据中的记录值【英文标题】:How to change record value in core data 【发布时间】:2012-08-08 20:19:15 【问题描述】:
    我有 UITableView 所有单元格中都有一个 UISwitch。 我的核心数据由值填充。 名为 switchValue 的核心数据属性之一,具有 @"OFF" 值。

现在我需要:

    如果用户将 UISwitch 设置为 ON。 该操作将该行的 switchValue 属性的值更改为 @"ON"。

我的简单代码是:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];


    NSManagedObject *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
    cell.textLabel.text = [[object valueForKey:@"courseCode"] description];
    cell.detailTextLabel.text = [[object valueForKey:@"courseName"] description];
UISwitch *theSwitch = [[UISwitch alloc]init];

    cell.accessoryView = theSwitch;

    NSLog(@"%@",[[object valueForKey:@"switchValue"] description]);

    if ([[[object valueForKey:@"switchValue"] description]isEqualToString: @"ON"]) 

        theSwitch.on = YES;

    else

        theSwitch.on = NO;

    


    [theSwitch addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];

    return cell;


动作是:

-(void) switchChanged: (UISwitch *) sender


    NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
    NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];

    if (sender.on) 

        How can I change the value?

    else

    


【问题讨论】:

【参考方案1】:

获得托管对象后,只需设置其值即可。

NSManagedObject *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
[object setValue:@"ON" forKey:@"switchValue"];

如果您希望将这些更改保存到磁盘,您也必须在某个时候保存托管对象上下文。

【讨论】:

但如果用户将 UISwitch 更改为 on,我需要这样做。 我不确定你在问什么。【参考方案2】:

您可能应该使用 Core Data 模型管理器的代码生成工具(您创建模型的图表)。

但是,您始终可以通过以下方式获取值:

[object valueForKey:@"foo"]

并设置它们

 [object setValue:value forKey:@"foo"];

【讨论】:

以上是关于如何更改核心数据中的记录值的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式更改核心数据文件中的数据

如何以编程方式更改 Windows Phone 中设置器值中的图像

我如何获取连接在多行值中的id的记录

如何访问反应Context.Provider值中的另一个函数?

如何将逗号添加到数据框中的现有值中?熊猫

(Python)如何修复数据框列值中的数值表示错误