6

после того, как я вставляю ManagedObject в контекст, который я хотел бы получить позже, но перед сохранением контекста (я бы сохранил после того, как все объекты вставлены). Похоже, что запрос контекста позже с извлечением по этим объектам ничего не возвращает, если контекст ранее не был сохранен. Есть ли способ, чтобы сохранить только в конце (я предполагаю, что я могу сохранить мои объекты в массиве или словаре и запросов, что, но я думал, что CoreData бы сделать это для меня)CoreData: извлечение объекта из несохраненного контекста

+0

Это также может потерпеть неудачу, если вы используете NSDictionaryResultType http://stackoverflow.com/questions/1632029/nsdictionaryresulttype-expression-not-taking-into-account-newly-inserted-objects –

ответ

16

Попробуйте это:

[myFetchRequest setIncludesPendingChanges:YES]; 

от documentation:

Наборы если, когда выборка выполняется, он совпадает с в настоящее время несохраненные изменения в контексте управляемого объекта.

+0

я увидел, что и раньше, но кажется, что это не сработало, выборка возвращает массив элементов 0, но контекст отображает в нем 20 объектов (я регистрирую его с помощью [[moc insertObjects] count]), а если я сохранил до того, как moc содержит только один вставленный объект (я вставил он перед извлечением, но неважно), а массив извлеченных объектов имеет длину 1 (что верно). Может быть, это потому, что мой контекст ограничен постоянным хранилищем, я должен связать его с хранилищем в памяти? – rano

+0

Это должно работать независимо от того, где находится магазин. Если у вас есть несколько контекстов, помните, что вы можете извлекать только несохраненные объекты внутри каждого отдельного контекста, пока каждый контекст не будет сохранен в хранилище. – TechZen

+0

includesPendingChanges по умолчанию соответствует YES в соответствии с документацией, поэтому это действительно не помогает ... –

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