Ios 如何在Objective C的核心数据中保存阵列的剩余数据

Ios 如何在Objective C的核心数据中保存阵列的剩余数据,ios,arrays,uitableview,core-data,Ios,Arrays,Uitableview,Core Data,我是iOS新手,在核心数据中保存阵列的剩余数据时遇到了问题。 如图所示 我从表视图中选择了一个按钮,它将值保存在核心数据中 因此,我的代码是这样的 NSString *FailString=@""; NSString *WarningString=@""; NSManagedObjectContext *context = [self managedObjectContext]; NSError *error; NSFetchRequest *reques

我是iOS新手,在核心数据中保存阵列的剩余数据时遇到了问题。 如图所示

我从表视图中选择了一个按钮,它将值保存在核心数据中

因此,我的代码是这样的

 NSString *FailString=@"";
    NSString *WarningString=@"";

    NSManagedObjectContext *context = [self managedObjectContext];
    NSError *error;

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setEntity:[NSEntityDescription entityForName:@"AuditPost" inManagedObjectContext:context]];

    //  NSError *error = nil;
    NSArray *results = [context executeFetchRequest:request error:&error];
    NSLog(@"Result =%@",results);

    int imageSize   = imgData.length;
    NSLog(@"size of image in KB: %d ", imageSize/1024);
    int OCS=imageSize/1024;

    NSLog(@"OCS Image Size =%d",OCS);

    if(OCS<2)
    {
        AuditImageString=@"";
    }

    ComplareArray=[devices valueForKey:@"checkpointid"];

    BOOL contains = [ComplareArray containsObject:String2];

    if(contains == NO)
    {
        if (self.device) {
            // Update existing device
            [device setValue:Audit forKey:@"auditnameId"];
            [device setValue:String forKey:@"checklistid"];
            [device setValue:String2 forKey:@"checkpointid"];
            [device setValue:FailString forKey:@"failreason"];
            [device setValue:WarningString forKey:@"warningreason"];
            [device setValue:AuditStartDate forKey:@"starttimedate"];
            [device setValue:userid forKey:@"userid"];
            [device setValue:AuditImageString forKey:@"auditimage"];

            NSError *error = nil;
            // Save the object to persistent store
            if (![context save:&error]) {
                NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
            }

        } else {
            // Create a new device
            NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"AuditPost" inManagedObjectContext:context];
            [newDevice setValue:Audit forKey:@"auditnameId"];
            [newDevice setValue:String forKey:@"checklistid"];
            [newDevice setValue:String2 forKey:@"checkpointid"];
            [newDevice setValue:FailString forKey:@"failreason"];
            [newDevice setValue:WarningString forKey:@"warningreason"];
            [newDevice setValue:AuditStartDate forKey:@"starttimedate"];
            [newDevice setValue:userid forKey:@"userid"];
            [newDevice setValue:AuditImageString forKey:@"auditimage"];

            NSError *error = nil;
            // Save the object to persistent store
            if (![context save:&error]) {
                NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
            }
        }
    }
    else
    {
        NSError *error = nil;
        // Save the object to persistent store
        if (![context save:&error]) {
            NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
        }

        NSManagedObjectContext *context = [self managedObjectContext];

        NSFetchRequest *request = [[NSFetchRequest alloc] init];
        [request setEntity:[NSEntityDescription entityForName:@"AuditPost" inManagedObjectContext:context]];

        NSArray *results = [context executeFetchRequest:request error:&error];
        NSManagedObject* favoritsGrabbed = [results objectAtIndex:CurrentIndexPath];
        [favoritsGrabbed setValue:String forKey:@"checklistid"];
        // Save the object to persistent store
        if (![context save:&error]) {
            NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
        }
    }

    //example reload table
    dispatch_async(dispatch_get_main_queue(), ^{
        [Audittable reloadData];
    });  
if (self.device)
            {
                // Update existing device
                [device setValue:Audit forKey:@"auditnameId"];
                [device setValue:[NSString stringWithFormat:@"%@",Passarray[i]] forKey:@"checklistid"];
                [device setValue:[NSString stringWithFormat:@"%@",CheckpointNameIDArray[i]] forKey:@"checkpointid"];
                [device setValue:FailString forKey:@"failreason"];
                [device setValue:WarningString forKey:@"warningreason"];
                [device setValue:AuditStartDate forKey:@"starttimedate"];
                [device setValue:userid forKey:@"userid"];
                [device setValue:[NSString stringWithFormat:@"%@",AuditImageString] forKey:@"auditimage"];
                NSError *error = nil;
                // Save the object to persistent store
                if (![context save:&error]) {
                    NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
                }
            }
            else
            {
                // Create a new device
                NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"AuditPost" inManagedObjectContext:context];
                [newDevice setValue:Audit forKey:@"auditnameId"];
                [newDevice setValue:[NSString stringWithFormat:@"%@",Passarray[i]] forKey:@"checklistid"];
                [newDevice setValue:[NSString stringWithFormat:@"%@",CheckpointNameIDArray[i]] forKey:@"checkpointid"];
                [newDevice setValue:FailString forKey:@"failreason"];
                [newDevice setValue:WarningString forKey:@"warningreason"];
                [newDevice setValue:AuditStartDate forKey:@"starttimedate"];
                [newDevice setValue:userid forKey:@"userid"];
                [newDevice setValue:[NSString stringWithFormat:@"%@",AuditImageString] forKey:@"auditimage"];

                NSError *error = nil;
                // Save the object to persistent store
                if (![context save:&error]) {
                    NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
                }
             }
            }
            for (int i=0; i<PassarrIndexPaths.count; i++)
            {
                AuditNextTableViewCell *cell = [Audittable cellForRowAtIndexPath:[PassarrIndexPaths objectAtIndex:i]];
                DataModel *model = [arrData objectAtIndex:i];
                model.strSelected = @"P";
                [cell.passbtn setBackgroundColor:[UIColor greenColor]];
                [cell.failbtn setBackgroundColor:[UIColor lightGrayColor]];
                [cell.wipbtn setBackgroundColor:[UIColor lightGrayColor]];
                [cell.nabtn setBackgroundColor:[UIColor lightGrayColor]];
            }
//            Passbtn.backgroundColor=[UIColor greenColor];
//            NAbtn.backgroundColor=[UIColor lightGrayColor];
            [Audittable reloadData];
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
            NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"AuditPost"];
            self.devices = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];

            for (int i=0; i<PassarrIndexPaths.count; i++)
            {
                AuditNextTableViewCell *cell = [Audittable cellForRowAtIndexPath:[PassarrIndexPaths objectAtIndex:i]];
                DataModel *model = [arrData objectAtIndex:i];

                if([model.strSelected isEqualToString:@"P"])
                {

                }
                else if ([model.strSelected isEqualToString:@"W"])
                {

                }
                else if ([model.strSelected isEqualToString:@"F"])
                {

                }
                else if ([model.strSelected isEqualToString:@"NA"])
                {

                }
                else if ([model.strSelected isEqualToString:@"NAA"])
                {

                }
                else
                {
                    model.strSelected = @"PA";
                    [cell.passbtn setBackgroundColor:[UIColor greenColor]];
                    [cell.failbtn setBackgroundColor:[UIColor lightGrayColor]];
                    [cell.wipbtn setBackgroundColor:[UIColor lightGrayColor]];
                    [cell.nabtn setBackgroundColor:[UIColor lightGrayColor]];
                }
NSString*FailString=@”;
NSString*WarningString=@;
NSManagedObjectContext*上下文=[self-managedObjectContext];
n错误*错误;
NSFetchRequest*request=[[NSFetchRequest alloc]init];
[请求setEntity:[NSEntityDescription entityForName:@“AuditPost”inManagedObjectContext:context]];
//n错误*错误=nil;
NSArray*results=[context executeFetchRequest:request error:&error];
NSLog(@“结果=%@”,结果);
int imageSize=imgData.length;
NSLog(@“以KB为单位的图像大小:%d”,图像大小/1024);
int OCS=图像大小/1024;
NSLog(@“OCS映像大小=%d”,OCS);

如果(OCS如果我正确,您希望保存数据库中不存在的数据对象,只需执行以下操作

-(void)save_UpdateData:(NSArray *)yourArray {

    NSManagedObjectContext *_context = [self getManagedObjectContext];

     for(int i = 0; i < [yourArray count]; i++) {
        NSDictionary *details = [yourArray objectAtIndex:i];
        NSArray *_arrayMappingObjects = [self getSavedDataFromDB];
        //Lets check mapping object exist in current record or not.
        //If not exist then create new one and add the same
        //If already exist, No need to add.
        NSPredicate *_predicate = [NSPredicate predicateWithFormat:@"yourKey_predicate_id=%@",[NSNumber numberWithInt:[[details objectForKey:@"yourKey_predicate_id"] intValue]]];
        _arrayMappingObjects = [_arrayMappingObjects filteredArrayUsingPredicate:_predicate];
        if([_arrayMappingObjects count] > 0) {

          //Object already exist, No need to add the same object.

        } else {
            // Lets create an object add newly created instance
            ModelClass *modelObject = [NSEntityDescription insertNewObjectForEntityForName:@"ModelClass" inManagedObjectContext:_context];
            [modelObject setEntityName1:[details objectForKey:@"key1"]];//If your property is NSString
            [modelObject setEntityName2:[NSNumber numberWithInt:[[details objectForKey:@"key2"] intValue]]];//If your property is NSNumber
            [modelObject setEntityName3:[NSNumber numberWithInt:[[details objectForKey:@"key3"] intValue]]];

            [self saveContext];
        }
    }
}
-(void)保存更新数据:(NSArray*)您的数组{
NSManagedObjectContext*_context=[self-getManagedObjectContext];
对于(int i=0;i<[yourArray count];i++){
NSDictionary*details=[yourArray objectAtIndex:i];
NSArray*_arrayMappingObjects=[self-getSavedDataFromDB];
//允许检查映射对象是否存在于当前记录中。
//如果不存在,则创建新的并添加相同的
//如果已经存在,则无需添加。
NSPredicate*_谓词=[NSPredicate谓词格式:@“yourKey_谓词id=%@”,[NSNumber numberWithInt:[[details objectForKey:@“yourKey_谓词id”]intValue]];
_arrayMappingObjects=[\u arrayMappingObjects filteredArrayUsingPredicate:\u predicate];
如果([\u ArrayMapping对象计数]>0){
//对象已存在,无需添加相同的对象。
}否则{
//让我们创建一个对象并添加新创建的实例
ModelClass*modelObject=[NSEntityDescription insertNewObjectForEntityForName:@“ModelClass”在托管对象上下文中:_context];
[modelObject setEntityName1:[details objectForKey:@“key1”]];//如果属性为NSString
[modelObject setEntityName2:[NSNumber numberWithInt:[[details objectForKey:@“key2”]intValue]];//如果您的属性是NSNumber
[modelObject setEntityName3:[NSNumber numberWithInt:[[details objectForKey:@“key3”]intValue]];
[自我保护背景];
}
}
}
//获取保存的数据

-(NSMutableArray *)getSavedDataFromDB {

    NSMutableArray *_record = [[NSMutableArray alloc] initWithCapacity:0];

    NSManagedObjectContext *_context =[self getManagedObjectContext];
    NSFetchRequest *_fetchRequest = [[NSFetchRequest alloc]init];
    NSEntityDescription *_entityDesc =[NSEntityDescription entityForName:@"ModelClass" inManagedObjectContext:_context];
    [_fetchRequest setEntity:_entityDesc];

    NSError *_error;
    NSArray *_fetchedOjects = [_context executeFetchRequest:_fetchRequest error:&_error];

    for(int i=0;i<[_fetchedOjects count];i++) {
        ModelClass *modelObject = [_fetchedOjects objectAtIndex:i];
        [_record addObject:modelObject];
    }
    return _record;
}
-(NSMutableArray*)getSavedDataFromDB{
NSMUTABLEARRY*(U记录=[[NSMUTABLEARRY alloc]initWithCapacity:0];
NSManagedObjectContext*_context=[self-getManagedObjectContext];
NSFetchRequest*_fetchRequest=[[NSFetchRequest alloc]init];
NSEntityDescription*_EntityDescription=[NSEntityDescription entityForName:@“ModelClass”在托管对象上下文中:_context];
[\u fetchRequest setEntity:\u entityDesc];
n错误*\u错误;
NSArray*\u fetchedObjects=[\u context executeFetchRequest:\u fetchRequest error:&\u error];

对于(int i=0;i什么是剩余数据?创建管理对象模型并保存管理对象上下文。@如图所示,我已在core data中从数组中保存了一个字符串。单击“全选As Pass”后,我需要保存数组的剩余数据,这意味着跳过第一个索引并在core data中保存数组的其他值。是否可能?@Jitendra如何保存@茂朱将这个链接看作是一个通用的解决方案。你可以根据你的依赖性改变你的代码和逻辑。