数据未存储在核心数据数据库中

时间:2014-03-28 06:47:01

标签: ios iphone ios7 ios6

NSArray  *theArray = [[notification userInfo] objectForKey:@"myArray"];
for (NSDictionary * dict in theArray) {

    CustomerOrder * newEntry = [NSEntityDescription insertNewObjectForEntityForName:@"CustomerOrder"
                                                             inManagedObjectContext:self.managedObjectContext];

    [newEntry setValue:[dict objectForKey:@"customer_id"] forKey:@"customer_id"];
    [newEntry setValue:[dict objectForKey:@"ExecutedOrderCount"] forKey:@"executedOrderCount"];
    [newEntry setValue:[dict objectForKey:@"order_id"] forKey:@"order_id"];
    [newEntry setValue:[dict objectForKey:@"outletLatitude"] forKey:@"outletLatitude"];
    [newEntry setValue:[dict objectForKey:@"outletLongitude"] forKey:@"outletLongitude"];
    [newEntry setValue:[dict objectForKey:@"trigger_days"] forKey:@"trigger_days"];

    [newEntry setValue:[dict objectForKey:@"trigger_end_date"] forKey:@"trigger_end_date"];
    [newEntry setValue:[dict objectForKey:@"trigger_from_time"] forKey:@"trigger_from_time"];
    [newEntry setValue:[dict objectForKey:@"trigger_no_days"] forKey:@"trigger_no_days"];

    [newEntry setValue:[dict objectForKey:@"trigger_radius"] forKey:@"trigger_radius"];
    [newEntry setValue:[dict objectForKey:@"trigger_start_date"] forKey:@"trigger_start_date"];
    [newEntry setValue:[dict objectForKey:@"trigger_to_time"] forKey:@"trigger_to_time"];

    NSLog(@"Log %@", newEntry);

    [SharedAppDelegate saveContext];
}

3 个答案:

答案 0 :(得分:0)

只需使用

NSEntityDescription *entityDesc=[NSEntityDescription entityForName:@"CustomerOrder" inManagedObjectContext:self.managedObjectContext];
NSFetchRequest *request=[[NSFetchRequest alloc]init];
[request setEntity:entityDesc];
NSManagedObject * newEntry =[[NSManagedObject alloc]initWithEntity:entityDesc insertIntoManagedObjectContext:self.managedObjectContext];
    ....


NSError *error;                
[self.managedObjectContext save:&error];
希望这会有所帮助..

答案 1 :(得分:0)

试试此代码

NSArray  *theArray = [[notification userInfo] objectForKey:@"myArray"];
 for (NSDictionary * dict in theArray) {

//TypeCast here

CustomerOrder* newEntry = (CustomerOrder *)[NSEntityDescription insertNewObjectForEntityForName:@"CustomerOrder"
                                                         inManagedObjectContext:self.managedObjectContext];

[newEntry setValue:[dict objectForKey:@"customer_id"] forKey:@"customer_id"];
[newEntry setValue:[dict objectForKey:@"ExecutedOrderCount"] forKey:@"executedOrderCount"];
[newEntry setValue:[dict objectForKey:@"order_id"] forKey:@"order_id"];
[newEntry setValue:[dict objectForKey:@"outletLatitude"] forKey:@"outletLatitude"];
[newEntry setValue:[dict objectForKey:@"outletLongitude"] forKey:@"outletLongitude"];
[newEntry setValue:[dict objectForKey:@"trigger_days"] forKey:@"trigger_days"];

[newEntry setValue:[dict objectForKey:@"trigger_end_date"] forKey:@"trigger_end_date"];
[newEntry setValue:[dict objectForKey:@"trigger_from_time"] forKey:@"trigger_from_time"];
[newEntry setValue:[dict objectForKey:@"trigger_no_days"] forKey:@"trigger_no_days"];

[newEntry setValue:[dict objectForKey:@"trigger_radius"] forKey:@"trigger_radius"];
[newEntry setValue:[dict objectForKey:@"trigger_start_date"] forKey:@"trigger_start_date"];
[newEntry setValue:[dict objectForKey:@"trigger_to_time"] forKey:@"trigger_to_time"];

NSLog(@"Log %@", newEntry);

//Save all  
NSError *error = nil;
if (![self.managedObjectContext save:&error]) {
// Handle Error
      NSLog(@"Save Error: %@, %@", error, [error userInfo]);
  return NO;
  }

}

答案 2 :(得分:-1)

您可以在self.managedObjectContext中创建实体,但需要保存调用[SharedAppDelegate saveContext];

您可以尝试在NSLog

之后添加此代码吗?
NSError * err = nil;
[newEntry.managedObjectContext save:&err];

NSLog(@"error: %@", err.localizedDescription);

并在循环调用后保存在父上下文中

__weak typeof (self) weakSelf;
[self.managedObjectContext.parentContext performBlock:^(){ [weakSelf.managedObjectContext.parentContext save:NULL] }];