在缓存中保存JSON数据

时间:2014-05-25 22:35:21

标签: ios uitableview caching saving-data

我正在开发一个项目,它有一个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 个答案:

答案 0 :(得分:1)

您应该仅在 viewDidLoad中下载数据,然后当用户想要时,他可以拉取tableView进行刷新。这是正确的方法。

通过这种方式,当您按下tableView然后返回时,您的viewController 仍会 ;#em>"临时缓存&# 34; 是你的数组_programacao

如果您想要在关闭应用程序的情况下存储数据,您可以使用例如CoreData,但这是您的目的不需要的另一件事。