Как добавить 10 элементов в базовые данные? - PullRequest
1 голос
/ 22 января 2012

Я хочу добавить 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];
}

Ответы [ 2 ]

4 голосов
/ 22 января 2012

Вы должны вставить 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 голос
/ 22 января 2012

Если вы переместите вторую строку кода внутри цикла for, вы должны увидеть 10 добавленных элементов ...

Метод -initWithEntity:insertIntoManagedObjectContext: создает новый управляемый объект и вставляет его в managedObjectContext. В своем коде вы вставляете один элемент и редактируете его 10 раз

...