我们可以让用户知道使用iphone sdk从互联网更新数据的日期吗?

我们可以让用户知道使用iphone sdk从互联网更新数据的日期吗?,iphone,Iphone,我正在制作一个iphone应用程序,它可以在一个表格视图中显示网站的数据。基本上,我将网站的数据存储在一个数组中,然后显示在一个表格上。现在,我希望每当网站更新数据时,用户都能得到数据更新的日期。有人能告诉我一些不同的方法吗?那么,你是在手机上存储(缓存)网站的数据,并且只是偶尔更新一次,还是在每次应用启动时加载网站并填充表格 如果您没有存储它(使用核心数据、用户默认值、NSKeyedArchiver等),您将很难判断数据是否已更改 在这种情况下(不存储),您可以在从网站提取数据后生成数据的哈希

我正在制作一个iphone应用程序,它可以在一个表格视图中显示网站的数据。基本上,我将网站的数据存储在一个数组中,然后显示在一个表格上。现在,我希望每当网站更新数据时,用户都能得到数据更新的日期。有人能告诉我一些不同的方法吗?

那么,你是在手机上存储(缓存)网站的数据,并且只是偶尔更新一次,还是在每次应用启动时加载网站并填充表格

如果您没有存储它(使用
核心数据
用户默认值
NSKeyedArchiver
等),您将很难判断数据是否已更改

在这种情况下(不存储),您可以在从网站提取数据后生成数据的哈希值,并使用
NSUserDefaults
NSDate
存储数据

下次从网站中提取信息时,您将再次生成哈希,并将其与以前的值进行比较。如果它们匹配,则内容不会更新,否则会更新,并存储新的哈希值和当前日期

如果你能控制网站,你可以做几件事

  • 返回HTTP标头,其中包含有关网站上次更新时间的信息,并将其与本地存储的日期进行比较。这将允许您使用
    HEAD
    HTTP语义检查是否需要完整的
    GET
    请求,从而最大限度地减少网络访问

  • 实现推送通知(在您的情况下,这似乎是多余的),通知用户内容已更新

  • 祝你好运

    更新

    因此,您最好调用
    [myArray hash]
    并将其存储在NSUserDefaults中,例如

    NSUInteger hashValue = [myArray hash];
    NSDate *now = [NSDate now];
    
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    [prefs setObject:hashValue forKey:@"hash"];
    [prefs setObject:now forKey:@"date"]; // Maybe you have to convert the date to a string.
    [prefs synchronize];
    
    然后在应用程序启动(或激活)时加载:


    每次应用程序启动时,我都会从网站加载数据。每次应用程序启动时,网站的数据都会存储在一个数组中,然后显示在表格上。如果您觉得有用,请接受答案。
    // Load the website again and generate the hash.
    NSUInteger newHashValue = [myArray hash];
    
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSUInteger *oldHashValue = [prefs stringForKey:@"hash"];
    
    NSDate *contentDate;
    
    if (newHashValue == oldHashValue)
    {
        contentDate = [prefs dateForKey:@"date"];
    }
    else
    {
        contentDate = [NSDate now];
    
        // Store the new date.
        // and the new hash.
    }