我想在Core Data商店中添加10个元素。
问题是只添加了最后一个元素。
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Test" inManagedObjectContext:[self managedObjectContext]];
Test *test = [[[Test alloc] initWithEntity:entity insertIntoManagedObjectContext:[self managedObjectContext]] autorelease];
for (int i =0; i<10; i++)
{
test.text = @"Text";
test.index = [NSNumber numberWithInt:i];
[self saveContext];
}
答案 0 :(得分:4)
您必须将test
插入到循环内的中,而不是之前:
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Test" inManagedObjectContext:[self managedObjectContext]];
for (int i = 0; i < 10; i++) {
Test *test = [[[Test alloc] initWithEntity:entity insertIntoManagedObjectContext:[self managedObjectContext]] autorelease];
test.text = @"Text";
test.index = [NSNumber numberWithInt:i];
[self saveContext];
}
另外,出于性能原因,我会将环境保存在循环之外。您只需要保存一次,而不是每次都保存。
答案 1 :(得分:1)
如果你在for循环中移动你的第二行代码,你会看到添加了10个项目......
-initWithEntity:insertIntoManagedObjectContext:
方法创建一个新的托管对象并将其插入managedObjectContext
。在您的代码中,您要插入一个元素,并对其进行10次编辑