6

我还是 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();
        }
    }
}
4

2 回答 2

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];
于 2013-07-26T14:53:05.167 回答
1

在您的 for 循环中 - 重复的代码只会更改新插入项的值。你需要在 for 循环中做的是insertNewObjectForEntityForName为每次迭代插入一个新的、单独的实体。

于 2013-07-26T14:52:22.780 回答