iPhone: очередь загрузки при запуске - PullRequest
4 голосов
/ 17 июля 2010

Я нигде не нашел ответа на этот вопрос, но это похоже на типичную проблему:

Я хотел бы отправить несколько POST-запросов (с ASIHTTPRequest, что я уже делаю), но если что-то пойдет не так, то пользователь может решить «Попробовать позже», то есть задача должна быть поставлена ​​в очередь и эта очередь должна быть прочитана при следующем запуске приложения. Итак, вот мой вопрос: как «сохранить» очередь, чтобы приложение могло прочитать ее при следующем запуске? Можно ли «прочитать» очередь и попробовать отправить этот POST-запрос еще раз, скажем, через 10 минут, даже если приложение не запущено?

Какую документацию мне следует прочитать, чтобы можно было это сделать?

Я был бы очень рад услышать любые ответы. Заранее спасибо.

PS: у меня есть еще одна идея: поскольку мне просто нужно загрузить фотографии, у меня может быть папка со всеми фотографиями, которые еще нужно загрузить, и когда приложение запускается, приложение просматривает эту папку и пытается отправить все фотографии в этой папке. Имеет ли это смысл?

Ответы [ 2 ]

2 голосов
/ 17 июля 2010

Мой подход к этой проблеме был бы следующим:

  1. Когда вам не удается отправить подробности - записать содержимое массива в файл, используя «[NSArray writeToFile:]», вы можете использовать сериализацию, еслимассив содержит любые данные, которые определяются пользователем (если ваш массив содержит стандартные объекты какао (NSString, NSData и т. д.), которые они уже реализовали при сериализации)
  2. при запуске приложения;загрузить содержимое из файла непосредственно в объект массива ('[NSArray arrayWithContentsOfFile:]')
  3. , затем создать запрос http и попытаться отправить.В приложении данные (в вашем массиве дел) хранятся / сериализуются, а не запрос, вам нужно восстановить HTTP-запрос, если вы хотите попробовать еще раз (не пытайтесь сериализовать ASIHTTPRequest, вы восстановите его)
2 голосов
/ 17 июля 2010

Я предполагаю, что вы уже посмотрели на NSOperationQueue и NSOperation.AFAIK нет встроенной поддержки для сериализации NSOperation, но вы можете очень легко написать свой собственный механизм сериализации для подкласса NSOperation, который вы используете для публикации данных и записать NSOperationQueue operations на дискесли что-то пойдет не так.

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

...