2010-07-28 4 views
0

Я создаю приложение для своего iPhone, используя coredata.CoreData метод сохранения не работает

У меня есть viewcontroller с объектом, который я хочу сохранить для моего объекта FavoriteViewController. При нажатии на кнопку любимого Я хочу, чтобы мой объект будет сохранить в managedObjectContext, но я получаю следующее сообщение об ошибке:

, истекающем приложение из-за неперехваченное исключение «NSInternalInconsistencyException», причина: «попытался выполнить другую операцию с пока не выполняется ». *

Мой код:

// Step 1: Create Object 
Favorite * newFavorite = (Favorite*)[NSEntityDescription insertNewObjectForEntityForName:@"Favorite" inManagedObjectContext:managedObjectContext]; 

// Step 2: Set Properties  
    newFavorite.name = @"Company"; 

    NSLog(@"%@",newFavorite); 

// Step 3: Save Object 

    NSError *error = nil; 
    if (![newFavorite.managedObjectContext save:&error]) { // this is where the program crash 
     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     abort(); 
    } 

Я не уверен, что я делаю неправильно.

+0

Используете ли вы несколько потоков в своем приложении? – Siddiqui

+0

Нет, я не использую несколько потоков. – user380656

ответ

0

Я собираюсь угадать, что у вас есть элемент пользовательского интерфейса, например таблица, которая активирует выборку при изменении пользовательского интерфейса. Например, если у вас есть выбранный контроллер результатов, любая прокрутка таблицы может активировать выборку получаемого результата.

Вы не можете мутировать коллекцию во время итерации по этой коллекции, потому что счетчик итераций изменяется во время итерации. Выбирает итерацию по набору объектов, соответствующих его сущности и предикату. Если вы вставляете объект во время работы fetch, вы получите сообщение об ошибке.

Обычно вы видите эту проблему с несколькими потоками, но я думаю, что пользовательский интерфейс может вызвать проблему при правильном наборе обстоятельств.

+0

Да, у меня есть таблица, которая извлекает данные. Я хочу сохранить или скопировать эти данные в другой файл manageObjectContext. Как я могу это сделать, не получая данные? – user380656

+0

Вы должны делать что-то необычное, чтобы вызвать обновление таблицы одновременно с извлечением. Является ли элемент пользовательского интерфейса инициирующим включение самого нового объекта в табличное представление? Если у вас есть два или более контекста, их индивидуальные изменения могут сталкиваться друг с другом. Я не могу сказать, не зная больше о вашем приложении. – TechZen

0

Возможно, вы что-то изменили в своих таблицах. Если это правда, попробуйте использовать исходные значения для таблицы Z_METADATA (Z_VERSION, Z_UUID, Z_PLIST), Z_PRIMARYKEY (Z_ENT) ...

Смежные вопросы