Я кэширую данные в CoreData в своем приложении, чтобы уменьшить запрос на обновление, когда нет ничего нового.Как предотвратить использование кеша при наличии новых данных?
Вот моя логика кэширования в псевдокоде:
if cacheExistsInCoreData {
if cacheIsOutdated {
loadDataFromRemoteAndCacheItWithCurrentDate()
}else {
useCache()
}else {
loadDataFromRemoteAndCacheItWithCurrentDate()
}
Как я могу проверить, если кэш устарел:
func checkIfCacheIsOutdated {
if lastCachedDate isOrderThan selfDefinedCheckingDate {
return true // need to load new data
}else {
return false // just use cache
}
}
Этот механизм работает отлично почти все время.
В то время как в редкой ситуации я нахожу, что моя программа кэширует неверные данные с правильной датой, что означает, что пользователь может видеть старые данные и не может получить обновление, когда новый доступен.
Если в моей логике кэширования нет ничего плохого, интересно, может ли причина быть причиной, когда удаленные данные извлекаются моим приложением до того, как оно будет обновлено, а затем будет храниться в основных данных с самым последним временем.
Кэш в основных данных включает в себя:
данных (не предусмотрено удаленного сервера) // ничего не могу с ним делать ...
даты (предоставленный мной, используя NSDate())
Как я могу убедиться, что оба объекта правильно подключены (последние данные с текущим временем) перед их хранением?