我想在應用程序中的不同位置存儲數據,可通過應用程序訪問對象。類似於php中的會話或全局變量。我知道我可以使用NSUserDefaults,但我不知道如何繼續向它添加值然後訪問它。例如,首先我想存儲登錄時使用的用戶名,然後在第三屏上,我想保存他從公司列表中選擇的那個用戶的公司。然後在第5個屏幕上,我想保存用戶選擇的位置。然後我有不同的功能,用戶可以根據他的選擇使用不同的功能。由於我是一個新手,我很抱歉,如果這是一個愚蠢的問題,但任何人都可以幫助我,我將如何存儲和檢索整個應用程序可訪問的多個數據。在iPhone中保存會話數據
2
A
回答
2
您在評論中詢問我是否在屬性列表中提供了代碼段。當然。沒問題。首先你需要做的是創建你的財產清單文件。只需將一個屬性列表類型的文件添加到您的項目中。我們稱之爲DataPoints.plist。就本例而言,該文件將包含NSString類型的鍵值條目。在代碼示例中,我只是提取屬性列表條目並加載數組。現在你可以對數組做任何你想做的事情。用它來加載一個表格視圖或其他。希望這可以幫助。如果確實如此,請將其標記爲已接受的答案。謝謝!
NSString *errorDesc;
NSPropertyListFormat format;
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"DataPoints" ofType:@"plist"];
NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath];
NSDictionary *temp = (NSDictionary *)[NSPropertyListSerialization
propertyListFromData:plistXML
mutabilityOption:NSPropertyListMutableContainersAndLeaves
format:&format
errorDescription:&errorDesc];
if (!temp) {
// Handle Error
Log(@"Error reading plist: %@, format: %d", errorDesc, format);
}
NSArray *dataPoints = [NSArray arrayWithArray:[temp objectForKey:@"DataPoints"]];
0
創建一個單例對象。我知道這不是一個很好的模式,但它是解決您的問題的最簡單的解決方案。
5
在iOS設備上,您有多種存儲數據的選項。這裏有幾個你可能會考慮的:
核心數據和SQL數據存儲庫或XML存儲庫。這基本上是蘋果的設備數據庫框架庫,可供所有應用程序使用。這不是最簡單的選項,但它可以讓您存儲相當大量的各種數據,這些數據將在整個應用代碼中提供。此外,只要應用程序關閉前將其保存到持久性數據存儲中,數據就會在應用程序啓動之間保留。
屬性列表。屬性列表比Core Data更輕量級,您可能會發現它們更易於使用。它們允許將基本鍵值對存儲和檢索到持久性屬性列表文件中。因此,只要您在應用程序關閉之前將數據存儲到屬性列表文件中,您還可以在應用程序啓動之間獲得數據保留的優勢。
將數據存儲到文本文件。我不確定這是否比財產清單有任何優勢。
用戶默認值。我不確定您在應用使用過程中如此輕鬆地添加新類型的數據。這更多地用於提供一組默認應用程序設置,然後允許用戶在應用程序使用過程中對其進行個性化設置。
內存中的單例對象。這可能是一種選擇,但是,當然,一旦應用程序關閉,所有數據都會消失,除非它以某種方式永久存儲到永久性數據存儲中。
我敢肯定有除了這些其他的選擇。我會有興趣閱讀它們。我希望這有幫助。
相關問題
- 1. 在數據庫中保存會話
- 2. 在會話中保存數據庫值
- 3. 在會話超時之前保存會話數據?
- 4. 如何將會話中的音頻文件保存在sqlite數據庫中,iphone?
- 5. 將數據保存在數據庫或會話中
- 6. 在Global.asax中保存會話
- 7. 無法在會話中保存數據存儲
- 8. 如何在windows的內存中保存php會話數據?
- 9. 在會話中保存URL參數(rails)
- 10. 值不保存在會話數組中
- 11. 保存數據iphone
- 12. Silex會話不保存數據?
- 13. IE9不保存會話數據
- 14. 使用會話來保存數據
- 15. 使用會話無法保存數據
- 16. AddDistributedSqlServerCache不保存會話到數據庫
- 17. wev2py 1.99.2:保存會話數據庫
- 18. 保存表單數據和會話
- 19. 使用CoreData保存「數據會話」
- 20. 如何保存數據到會話CodeIgniter
- 21. Flask:手動保存會話數據
- 22. 會話數據沒有保存
- 23. 保存數據到WooCommerce會話
- 24. 如何在下一個會話中使用從舊會話保存的數據?
- 25. 會話數據不保存到數據庫中的Yii
- 26. PHP會話安全性:將會話存儲在數據庫中與更改會話保存路徑?
- 27. 在iPhone開發中保存數據
- 28. 如何保存表中的會話數據而不會過期會話?
- 29. 將會話保存到標籤,然後保存回數據庫
- 30. 簡單的存儲在會話之間不會保留數據
非常感謝您的回覆。我想我應該從上面的評論中使用財產清單。此外,當應用啓動時,我不需要獲取數據,因爲這是動態的,並且是用戶在啓動應用時選擇的內容。所以每次都會有所不同。你也可以告訴我如何創建一個屬性列表文件,以及我將如何保存並從中檢索數據。 – developer 2011-03-30 14:15:10
我在屬性列表中提供了一個代碼示例。雖然,我可能會補充一點,這聽起來好像你不需要在應用程序啓動之間保存數據。在這種情況下,如果數據不足以消耗大量內存,則可以考慮使用內存中的單例對象,如Joris所建議的。如果是大量數據,那麼爲了釋放一些內存,您可能希望使用將數據轉儲到持久性存儲的東西,例如屬性列表或核心數據。 – 2011-04-01 16:53:59