更新核心数据值

时间:2013-10-15 19:45:40

标签: iphone objective-c

我需要更新核心数据中所需单元格的值。我有一个已知值的单元格(ID)。我需要找到值并替换。我知道如何更改数组的元素。以下显示了我是如何做到的。但我必须更改MyBase中的字段(ID)。我需要更改的值将等于fromIndexPath.row。我需要更改为IndexPath.row的值。

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath
                                                           *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
if (fromIndexPath.section == toIndexPath.section) {

    NSFetchRequest* fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription* entityDescription = [NSEntityDescription entityForName:@"MyBase"
                                                         inManagedObjectContext:self.objectContext];
    [fetchRequest setEntity:entityDescription];

    empArray = [(NSArray*)[self.objectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];

    MyBase *employee = [empArray objectAtIndex:fromIndexPath.row];

      [empArray removeObjectAtIndex:fromIndexPath.row];
      [empArray insertObject:objectToMove atIndex:toIndexPath.row];
}

}

1 个答案:

答案 0 :(得分:0)

更新核心数据,您可以尝试:

NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@:@"Employee"    
                                          inManagedObjectContext:self.managedObjectContext];
[request setEntity:entity];   

NSPredicate *pred = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"empId = %d", 12345]];
[request setPredicate:pred];

NSArray *empArray=[self.managedObjectContext executeFetchRequest:request error:nil];
[request release];

if ([empArray count] > 0){
    Employee *employee = [empArray objectAtIndex:fromIndexPath.row];;

    employee.empSalary=[NSNumber numberWithInt:45000];

    employee.empName=@"John";
    employee.empDesignation=@"Analysist";
    employee.empExp=@"4 Years";

    [self.managedObjectContext save:nil];
相关问题