【问题标题】:Save JSON Data In Cache将 JSON 数据保存在缓存中
【发布时间】:2014-07-14 15:58:08
【问题描述】:

我正在开发一个具有 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];

    }

}

我编辑代码。

【问题讨论】:

    标签: ios uitableview caching saving-data


    【解决方案1】:

    你应该下载数据就在viewDidLoad,然后当用户想要时,他可以拉动tableView刷新 .这是正确的方法。

    这样,当您推送viewController 然后返回时,您的tableView 也将保持加载状态,而您的“临时缓存” 就是您的数组_programacao.

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

    【讨论】:

    • 这个 TableView 打开我的应用程序。 是出现的第一个视图。无论如何我应该在 viewdidload 上使用吗?
    • 没错。 DidLoad 仅在您第一次打开 viene 控制器时调用,即完成加载视图框架时。
    • 所以我尝试了,但在这里不起作用。我将 在 viewDidAppear 中的代码放在了我的 viewDidLoad 中。但是如果我失去了互联网连接,之前下载的内容将不再出现。我必须更改代码中的某些内容?
    • 我不明白你的问题:如果现在有连接并且你加载了 tableview,如果在第二个时刻连接没有,tableview 保持加载直到你不释放它视图控制器。意思是如果你形成了tableview的viewController,再呈现另一个viewController然后回来,tableView会继续被加载。
    • 是的,我明白你的意思。但它没有发生。也许视图,在我加载内容后,转到另一个视图 e 回来。 TableView 尝试加载新内容,因为没有连接,内容消失了。我想知道我是否应该检查我的数组 _programacao 是否有一些内容?如果是,代码什么也不做,如果不是,它会尝试下载内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 2011-10-11
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    相关资源
    最近更新 更多