【发布时间】:2013-01-02 19:08:50
【问题描述】:
我认为这是错误的,它只加载一个汽车零件: 此方法采用两个数组,一个包含汽车名称,一个包含零件,创建一辆新车,并将汽车零件添加到其中,然后将汽车保存到核心数据中。 (目前不适合这种方式)
for (int i=0; i<[massiveArray count]; i++) {
//create a new car and part
Car*newCar =(Car*)[NSEntityDescription insertNewObjectForEntityForName:@"Car" inManagedObjectContext:[self managedObjectContext]];
CarPart *part =[NSEntityDescription insertNewObjectForEntityForName:@"CarPart" inManagedObjectContext:[self managedObjectContext]];
//set car title to string title in array of titles
[newCar setValue:[massiveArray objectAtIndex:i] forKey:@"name"];
//go through car parts array and add all new parts for that specific car
for (int i=0; i<[partNamesArray count]; i++) {
[part setValue:[partNamesArray objectAtIndex:i] forKey:@"name"];
[newCar addToCarPartObject:part];
//save each part??? I think this is wrong
[self.managedObjectContext save:nil];
}
//Save new car
[self.managedObjectContext save:nil];
}
【问题讨论】:
-
要记住的一点是,当您在 managedObjectContext 上调用 save 时,它会保存所有当前待处理的事务。它实际上不应该影响您看到的问题,但我建议只有一个保存调用位于两个循环之外。但这是一个问题,目前正在发生什么?代码是否运行并且只是不保存对象?编辑:为了澄清我的问题,内部 for 循环实际上是否多次触发?
-
内部 for 循环会触发不止一次(一辆车会有很多零件)。实际情况是每辆车只节省一个汽车零件,而不是全部。
标签: ios core-data nsmanagedobject