У меня есть демон launchd, который очень часто загружает некоторые данные через веб-сервис, используя NSOperationQueue.
Мне нужно сохранить эти данные, чтобы впоследствии их можно было повторно загружать в случае сбоя, даже между сеансами (например, в случае выключения компьютера).
Это не приложение с высокой нагрузкой, оно, вероятно, получает элементы с перерывами не более 1 или 2 каждую минуту, часто с интервалом в несколько часов.
Моя первоначальная реализация без этого постоянного места выглядит следующим образом:
- Демон получает данные.
- Демон анализирует данные в объект типа MyDataObject.
- Daemon создает экземпляр подкласса NSOperation с MyDataObject в качестве объекта для загрузки и добавляет его в свое NSOperationQueue.
- NSOperationQueue проходит и загружает MyDataObject через веб-сервис, насколько это возможно.
Эта часть прекрасно работает. Часть, которую я сейчас хочу добавить, - это сохранение в случае сбоя веб-службы, выключения компьютера и т. Д.
Кажется, что я мог бы использовать NSMutableArray MyDataObjects вместе с архиватором NSKeyed (Un), содержащим все элементы, которые еще не были загружены, и наблюдение за ключом -isFinished всех операций по удалению элементов из массива, но это Похоже, что должен быть более простой способ, с меньшим количеством места для того, чтобы что-то пошло не так, особенно в том, что касается безопасности потоков.
Может ли кто-нибудь указать мне правильное направление?