Сохранить данные 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, но это еще одна вещь, которая не нужна для вашей цели.

Другие вопросы по тегам