Objective c 如何更新和删除使用核心数据的表的所需记录

Objective c 如何更新和删除使用核心数据的表的所需记录,objective-c,cocoa,core-data,Objective C,Cocoa,Core Data,我正在学习核心数据 如何使用核心数据删除和更新数据。我一直致力于上传和获取。我需要编写删除和更新的方法。请告诉我如何使用核心数据更新和删除重新编码 下面我编写了使用核心数据上传和从表中获取数据的代码 -(void)uploadData { Employee *empObj=(Employee *)[NSEntityDescription insertNewObjectForEntityForName:@"Employee" inManagedObjectContext:self.mana

我正在学习核心数据 如何使用核心数据删除和更新数据。我一直致力于上传和获取。我需要编写删除和更新的方法。请告诉我如何使用核心数据更新和删除重新编码

下面我编写了使用核心数据上传和从表中获取数据的代码

-(void)uploadData
{
    Employee *empObj=(Employee *)[NSEntityDescription insertNewObjectForEntityForName:@"Employee" inManagedObjectContext:self.managedObjectContext];


    empObj.empId=[NSNumber numberWithInt:12345];
    empObj.empSalary=[NSNumber numberWithInt:25000];

    empObj.empName=@"Venu";
    empObj.empDesignation=@"Programmer";
    empObj.empExp=@"2 Years";

    if ([self.managedObjectContext hasChanges] )
    {
        [self.managedObjectContext save:nil];
    }

}
-(void)fetchData
{
    NSEntityDescription *empEntity = [NSEntityDescription entityForName:@"Employee" inManagedObjectContext:self.managedObjectContext];

    // Setup the fetch request
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setEntity:entity];

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

    [request setEntity:empEntity];

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

    for (int i=0; i<[empArray count]; i++) 
    {
        printf("\n=================================Recored== %d==================================== ",i);

        Employee *empObj=[empArray objectAtIndex:i];
        printf("\n obj.empName========= %s",[empObj.empName UTF8String]);
        printf("\n obj.empDesignation========= %s",[empObj.empDesignation UTF8String]);
        printf("\n obj.empExp========= %s",[empObj.empExp UTF8String]);
        printf("\n obj.empId========= %d",[empObj.empId intValue]);
        printf("\n obj.empSalary========= %d",[empObj.empSalary intValue]);
        printf("\n============================================================================= ");

    }
}
-(void)上传数据
{
Employee*empObj=(Employee*)[NSEntityDescription insertNewObjectForEntityForName:@“Employee”inManagedObjectContext:self.managedObjectContext];
empObj.empId=[NSNumber numberwhithint:12345];
empObj.empalary=[NSNumber numberwhithint:25000];
empObj.empName=@“Venu”;
empObj.empsignation=@“程序员”;
empObj.empExp=@“2年”;
if([self.managedObjectContext hasChanges])
{
[self.managedObjectContext保存:nil];
}
}
-(void)获取数据
{
NSEntityDescription*Emperty=[NSEntityDescription entityForName:@“Employee”在managedObjectContext:self.managedObjectContext];
//设置获取请求
NSFetchRequest*request=[[NSFetchRequest alloc]init];
[请求集合实体:实体];
NSArray*fatherArray=[self.managedObjectContext executeFetchRequest:请求错误:nil];
[请求设置实体:emperty];
NSArray*empArray=[self.managedObjectContext executeFetchRequest:请求错误:nil];

对于(int i=0;i),在成功获取请求后,只需请求托管objectcontext删除对象,即可删除对象:

for (NSManagedObject *managedObject in items) {
    [self.managedObjectContext deleteObject:managedObject];
    DebugLog(@"%@ object deleted",entityDescription);
}
if (![self.managedObjectContext save:&error]) {
    DebugLog(@"Error deleting %@ - error:%@",entityDescription,error);
}

更新以类似的方式完成,获取所需对象,更改值,并保存上下文。

成功获取请求后,您只需请求托管objectcontext删除对象即可删除对象:

for (NSManagedObject *managedObject in items) {
    [self.managedObjectContext deleteObject:managedObject];
    DebugLog(@"%@ object deleted",entityDescription);
}
if (![self.managedObjectContext save:&error]) {
    DebugLog(@"Error deleting %@ - error:%@",entityDescription,error);
}

更新是以类似的方式完成的,获取所需的对象,更改值,并保存上下文。

我正在做一个涉及核心数据的项目,我会 我想和你分享一些关于它的事情

很明显,在删除或更新记录之前,您需要 检索该记录

以empId为12345的员工为例

a) 删除

b) 更新


我正在做一个涉及核心数据的项目,我会 我想和你分享一些关于它的事情

很明显,在删除或更新记录之前,您需要 检索该记录

以empId为12345的员工为例

a) 删除

b) 更新


这里发生了什么?是否明智地保存“仅”更改的记录,还是更新了EMPARY中的所有项?这里发生了什么?是否明智地保存“仅”更改的记录,还是更新了EMPARY中的所有项?
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:0];

    employee.empSalary=[NSNumber numberWithInt:45000];

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

    [self.managedObjectContext save:nil];
}