Сохранить данные JSON в кеше
Я работаю над проектом, у которого есть TableView, который загружает содержимое файла JSON на мой сервер. Все работает правильно, но у меня две проблемы.
1) Когда я меняю представление и загружаю другое представление, когда я возвращаюсь к этому TableView ... TableView пытается перезагрузить содержимое, ошибок нет, но на короткое время появляется индикатор выполнения. Как избежать этого?
2) Моя вторая проблема заключается в том, что после загрузки, если я теряю интернет-соединение и меняю вид, контент теряется. Даже я уже скачал. Как бы я сделал кеш этой информации?
Вот код:
@interface ProgramacaoTableViewController ()
{
// Object thats hold the content
MProgramacao *_programacao;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// TS MESSAGE
[TSMessage setDefaultViewController:self];
[self.navigationController.navigationBar setTranslucent:YES];
// Add Refresh Control
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refresh) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
////
// Check Connection and Load Data
if ([self IsConnected]) {
// YES INTERNET
// show loader view
[ProgressHUD show:@"Loading.."];
// fetch the feed
_programacao = [[MProgramacao alloc] initFromURLWithString:@"http://myurl..."
completion:^(JSONModel *model, JSONModelError *err) {
//hide the loader view
[ProgressHUD dismiss];
//json fetched
[self.tableView reloadData];
}];
}
else {
// NO INTERNET
[TSMessage showNotificationWithTitle:NSLocalizedString(@"Error Message", nil)
subtitle:NSLocalizedString(@"try again", nil)
type:TSMessageNotificationTypeError];
}
}
Я редактирую код.
1 ответ
Вы должны загрузить данные только в viewDidLoad
, а затем, когда пользователь ХОЧЕТ, он может потянуть tableView для обновления. Это правильный путь.
Таким образом, ваш tableView
будет оставаться загруженным также, когда вы нажимаете viewController
а затем вернитесь, и ваш "временный кеш" - это ваш массив _programacao
,
Если вы хотите сохранить данные также в случае закрытия приложения, вы можете использовать, например, CoreData
, но это еще одна вещь, которая не нужна для вашей цели.