我们可以让用户知道使用iphone sdk从互联网更新数据的日期吗?
我正在制作一个iphone应用程序,它可以在一个表格视图中显示网站的数据。基本上,我将网站的数据存储在一个数组中,然后显示在一个表格上。现在,我希望每当网站更新数据时,用户都能得到数据更新的日期。有人能告诉我一些不同的方法吗?那么,你是在手机上存储(缓存)网站的数据,并且只是偶尔更新一次,还是在每次应用启动时加载网站并填充表格 如果您没有存储它(使用我们可以让用户知道使用iphone sdk从互联网更新数据的日期吗?,iphone,Iphone,我正在制作一个iphone应用程序,它可以在一个表格视图中显示网站的数据。基本上,我将网站的数据存储在一个数组中,然后显示在一个表格上。现在,我希望每当网站更新数据时,用户都能得到数据更新的日期。有人能告诉我一些不同的方法吗?那么,你是在手机上存储(缓存)网站的数据,并且只是偶尔更新一次,还是在每次应用启动时加载网站并填充表格 如果您没有存储它(使用核心数据、用户默认值、NSKeyedArchiver等),您将很难判断数据是否已更改 在这种情况下(不存储),您可以在从网站提取数据后生成数据的哈希
核心数据
、用户默认值
、NSKeyedArchiver
等),您将很难判断数据是否已更改
在这种情况下(不存储),您可以在从网站提取数据后生成数据的哈希值,并使用NSUserDefaults
和NSDate
存储数据
下次从网站中提取信息时,您将再次生成哈希,并将其与以前的值进行比较。如果它们匹配,则内容不会更新,否则会更新,并存储新的哈希值和当前日期
如果你能控制网站,你可以做几件事
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.
}