我还是Core Data的新人。
我正在尝试在数组上循环三次,并且在每个循环中,我正在保存索引号。
但它只显示获取结果时的最后一个索引号。它覆盖了之前插入的所有内容。
我的代码是用AppDelegate编写的。
这是我的代码:
NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObject *tagsDB = [NSEntityDescription insertNewObjectForEntityForName:@"Tags" inManagedObjectContext:context];
for (int i = 0 ; i < 3 ; i++)
{
[tagsDB setValue:i forKey:@"ID"];
}
[self saveContext];
...
- (void)saveContext
{
NSError *error = nil;
NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
if (managedObjectContext != nil) {
if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {
// Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
}
答案 0 :(得分:8)
您必须为每个值创建实体。
NSManagedObjectContext *context = [self managedObjectContext];
for (int i = 0 ; i < 3 ; i++)
{
NSManagedObject *tagsDB = [NSEntityDescription insertNewObjectForEntityForName:@"Tags" inManagedObjectContext:context];
[tagsDB setValue:i forKey:@"ID"];
}
[self saveContext];
答案 1 :(得分:1)
在for循环中 - 重复的代码只是更改新插入项的值。你需要在for循环中做的是insertNewObjectForEntityForName
,它将为每次迭代插入一个新的独立实体。