如何更改核心数据中的记录值
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 中设置器值中的图像