2012-03-23 4 views
0

Я использую NSURLConnection для захвата XML-файла. Я разбираю XML-файл, а затем использую его для заполнения Core Data.Только импортировать XML, если он был обновлен

Если NSURLConnection не удается подключиться (то есть пользователь не имеет подключения к Интернету), я просто прочитал постоянные данные из Core Data.

Тем не менее, я думаю ... Есть ли способ, которым я могу проверить файл XML, чтобы узнать, обновлен ли он с того момента, когда я его использовал? Поэтому я могу сохранить redownloading/repopulating, если он не изменился?

Проверка последней модификации файла или еще что-то еще?

У кого-нибудь есть хорошее решение для этого?

Спасибо!

+1

Вопрос помечен неверно для проверки даты изменения файла на сервере. Если сервер поддерживает его, вы можете отправить запрос главы и проверить заголовок Last-Modified. – Joe

+0

В любом случае, вы можете предоставить пример кода? – sayguh

ответ

1

Это можно сделать, установив заголовки http или etags.

+0

Мне удалось получить пример кода, чтобы сделать это здесь http://stackoverflow.com/questions/6895451/how-to-get-remote-file-modification-date – sayguh

0

Попросите сервер добавить свое текущее системное время в XML-файл в качестве нового поля, такого как <timestamp>1332368408</timestamp>. Вам понадобится другой API-интерфейс сервера, чтобы проверить, был ли этот конкретный файл изменен, например, http://<server>/xmlFileChangedSince/1332368408, возвращающий true или false, на основе последнего измененного файла, как вы предложили, или путем перезаписи поля <timestamp> каждый раз, когда файл был изменен. Если результат вышеуказанного HTTP-запроса истинен, ваше приложение знает, как загрузить новые измененные данные.

Преимущество подхода добавления поля <timestamp> к файлу XML на стороне сервера заключается в том, что он предотвращает необходимость синхронизации времени сервера и приложения, которое гарантируется несинхронно. Если вы не хотите добавлять поле в данные XML, вы можете установить временную метку ваших данных на стороне приложения на основе возврата NSURLConnection, но если вы хотите, чтобы он был точно надежным, вам нужно будет синхронизировать приложение и сервер раз. Хотя это не особенно сложно, это раздражает.