Я смотрю на ту же проблему и пришел к выводу, что NSUserDefaults предназначен для небольших наборов данных, то есть для настроек и, возможно, состояния, но не для данных состояния. Большие значения данных или данные, которые я смотрю, сохраняются в файле с помощью [NSArray writeToFile] и считываются с помощью [NSArray initFromFile].
Вы должны запросить путь, назначенный вашему приложению, и добавить свое имя файла. То, что я еще не изучил, это как проверить наличие файла, как удалить (или некоторые другие средства очистки / сброса).
Я буду экспериментировать сегодня вечером. Другая вещь, которую я хочу сделать, это сохранить файл XML, но я думаю, что все, на что я могу надеяться, это строку XML в файле. Таким образом, я могу использовать ту же логику для получения данных в сети и загрузки локальной копии похожих данных.
Кстати, какова цель синглтона? Вы уже владеете всеми потоками, и никакой другой процесс (приложение) не может получить доступ к вашей песочнице, поэтому вы должны иметь возможность использовать семафоры (мьютекс). Мой вопрос не является проблемой, он помогает мне понять, какие шаблоны полезны в iPhone.