2010-09-27 21 views

回答

1

那麼,您是否在手機上存儲(緩存)網站數據,並且只是稍後更新一次,或者是每次應用程序啓動時加載網站並填充表格?

如果您沒有存儲它(使用Core Data,User Defaults,NSKeyedArchiver等),那麼您將如何判斷數據是否發生了變化?

在這種情況下(不存儲),您可以在從網站上提取數據後生成數據的哈希值並使用NSUserDefaults以及NSDate進行存儲。

下一次您從網站獲取信息時,您將再次生成哈希值並將其與以前的值進行比較。如果它們匹配,那麼內容不會更新,否則它會存儲新的哈希值和當前日期。

如果你有控制網站,你可以做幾件事情。

  1. 返回帶有信息的HTTP標頭什麼時候該網站最後一次更新,並將其與本地存儲的日期進行比較。這將允許您使用HEAD HTTP語義來檢查是否需要完整的GET請求,以允許您儘量減少網絡訪問。

  2. 實施推送通知(對您的情況看起來過度殺人),告訴用戶內容已更新。

祝你好運。

UPDATE

所以最好的辦法是打電話[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. 
} 
+0

IM從網站加載數據每次應用程序啓動 – 2010-09-27 09:19:59

+0

每次應用程序啓動網站的數據的時間存儲在一個陣列中然後在桌面上顯示 – 2010-09-27 09:21:12

+0

如果您認爲它有用,接受的答案將非常感謝。 – 2010-09-27 19:40:18

相關問題