Это в принципе невозможно. Чтобы достичь желаемого эффекта, вы должны выразить состояние приложения таким образом, чтобы оно могло быстро сохраняться в файловой системе периодически и при выходе, а затем восстанавливаться с «диска» при перезапуске.
Я никогда не использовал CoreData, но подозреваю, что он будет поддерживать такого рода требования вполне естественно. Сохранение состояния в SQLite - это еще одна возможность. Это очень разные подходы со своими плюсами и минусами, и выбор может сводиться к личным предпочтениям. Мне нравится SQLite, потому что я могу сохранять состояние постепенно и транзакционно, без необходимости регулярно запускать операцию сохранения мира (CoreData может также поддерживать это; я умоляю о незнании).