0
  1. 我有 UITableView
  2. 所有单元格中都有一个 UISwitch。
  3. 我的核心数据由值填充。
  4. 名为 switchValue 的核心数据属性之一,具有 @"OFF" 值。

现在我需要:

  1. 如果用户将 UISwitch 设置为 ON。
  2. 该操作将该行的 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{

    }

}
4

2 回答 2

1

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

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

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

于 2012-08-08T21:03:18.820 回答
1

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

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

[object valueForKey:@"foo"]

并将它们设置为

 [object setValue:value forKey:@"foo"];
于 2012-08-08T21:03:34.827 回答