Ios 如何在Objective C的核心数据中保存阵列的剩余数据
我是iOS新手,在核心数据中保存阵列的剩余数据时遇到了问题。 如图所示 我从表视图中选择了一个按钮,它将值保存在核心数据中 因此,我的代码是这样的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
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如何保存@茂朱将这个链接看作是一个通用的解决方案。你可以根据你的依赖性改变你的代码和逻辑。