我想在iOS中存儲全局數據,例如網絡中的會話數據。除了sqlite以外,什麼是最好的方法?在iOS中存儲臨時數據
回答
使用NSUserDefaults
。
NSUserDefaults非常適合保存samm數據,如分數,登錄信息,程序狀態。您不需要數據庫知識並且易於學習和使用。
這裏是一個很好的教程:
http://www.icodeblog.com/2008/10/03/iphone-programming-tutorial-savingretrieving-data-using-nsuserdefaults/
編輯: 雖然,根據您的評論看來,你只是想通過之間的數據ViewControllers。 方式一:
讓我們假設你想從ViewControllerA
通過NSString
myString
到ViewControllerB
。 然後在ViewControllerB
中創建一個像這樣的屬性。
@property (strong, nonatomic) NSString *passedString;// strong if you are using RC, ow retain
在ViewControllerA.m
,當你分配,啓動ViewControllerB
,然後
ViewControllerB *viewControllerB = [[ViewControllerB alloc]init];
viewControllerB.passedString = myString;
另一種方式:(更多的是全局變量類型的方式)
可以在申報財產AppDelegate.h
@property (strong, nonatomic) NSString *passedString;
在ViewControllerB,您可以創建AppDelgate對象和訪問屬性:
AppDelegate *app = [[UIApplication sharedApplication]delegate];
NSString *passedString = app.passedString;
您可以直接編寫基本類型,如NSNumber
,NSString
,NSArray
,NSDictionary
,等進入NSUserDefaults
。這些會在應用程序會話之間自動保存/加載。
NSString* myData = @"someValue";
[[NSUserDefaults standardUserDefaults] setObject:myData forKey:@"myData"];
對於更復雜的數據類型,您可以利用NSCoder和NSCoding協議輕鬆使您的類可序列化。
答案中的代碼可能會有幫助。 Save own Class with NSCoder
如果您的店鋪數據有限,請隨時使用NSUserDefaults
。 Apple Reference for NSUserDefaults
例如,您需要將某些字符串(比如名稱)存儲到用戶默認值中。
NSString *name = "Your Name";
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:name forKey:@"name"];
[defaults synchronize];
這裏重要的是,一旦你的setObject關鍵做,你必須調用synchronize
方法,使這些變化獲取存儲在用戶默認
訪問同一個firstname字符串
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[defaults objectForKey:@"name"];
您可以使用NSUserDefaults
。
保存數據,你可以使用此代碼
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"Dilip" forKey:@"firstName"];
[defaults setObject:@"Manek" forKey:@"lastname"];
[defaults setInteger:24 forKey:@"age"];
[defaults synchronize];
而且用於檢索數據使用此代碼
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *firstName = [defaults objectForKey:@"firstName"];
NSString *lastName = [defaults objectForKey:@"lastname"];
int age = [defaults integerForKey:@"age"];
NSString *ageString = [NSString stringWithFormat:@"%i",age];
您還可以在NSUserDefault
存儲NSDictionary
,NSArray
,或者NSData
的對象。對於更多信息看看this教程。
另一種在viewController之間傳遞數據的方式就是這樣。
,我們有兩個視圖控制器
-FirstViewController
-SecondViewController
現在,如果我想通過從第一串到第二的ViewController thanfirst在secondViewcontroller
#import <UIKit/UIKit.h>
@interface SecondViewcontroller : UIViewController
@property (strong, nonatomic) NSString *strFromFirst;
@end
創建一個字符串的屬性
將其合成到.m文件中。之後,在firstViewController當你推視圖控制器發送字符串第二的ViewController
SecondViewcontroller * vc = [[SecondViewcontroller alloc] initWithNibName:@"SecondViewcontroller" bundle:nil];
// Pass the selected object to the SecondViewcontroller.
fraudluntReportViewController.strFromFirst = @"Dilip";
[self.navigationController pushViewController:vc animated:YES];
這將從FirstViewController發送字符串SecondViewController。
您需要使用NSUSERDefault,它非常容易處理。
您可以保存的NSString,NSDictionaray,NSNumber的在NSUserDefault這樣的..
//存儲陣列值
NSMutableArray *array = [NSMutableArray array];
[[NSUserDefaults standardUserDefaults] setObject:array forKey:@"array"];
// Stroe的字符串nsuserDefault
NSString *[email protected]"ABC";
[[NSUserDefaults standardUserDefaults] setObject:str forKey:@"value"];
- 1. 在Elixir中存儲臨時數據
- 2. Powerapps臨時數據存儲
- 3. 臨時將數據存儲在Oracle的JTable或臨時表中
- 4. 將臨時數據存儲在DataGridView C#
- 5. 存在速度/安全性差異在臨時表中存儲臨時數據?
- 6. 臨時存儲數據然後模擬 - iOS
- 7. 使用jquery存儲臨時數據
- 8. 存儲臨時數據(JAVA + GAE)
- 9. Hibernate的臨時數據存儲
- 10. 臨時存儲數據C#,WPF,MVVM
- 11. 臨時數據存儲設計
- 12. 存儲購物車的臨時數據
- 13. 如何存儲臨時數據?
- 14. 如何臨時存儲數據與jQuery
- 15. 類臨時數據存儲區,Python
- 16. 如何將數據存儲在臨時內存中
- 17. Java-如何將數據臨時存儲在數組列表中
- 18. 將臨時數據存儲在臨時表中的替代方法是什麼?
- 19. 在會話數據中存儲vs在Sql數據庫中存儲臨時數據
- 20. SQLite中臨時數據庫的數據存儲空間3
- 21. mysql臨時表存儲在內存中?
- 22. Oracle中的臨時存儲?
- 23. 臨時存儲Datalist中C#
- 24. 什麼數據存儲在Amazon EC2實例的臨時存儲中?
- 25. 存儲臨時值
- 26. JavaScript臨時存儲
- 27. 將信用卡信息臨時存儲在數據庫中
- 28. 在c#中存儲多個臨時數據Arduino
- 29. 將臨時數據存儲在couchbase或redis中
- 30. 臨時存儲在asp.net中課堂上輸入的數據
你想nsuserdefault – Jitendra
我的目的是將數據從一個視圖控制器發送到其他視圖控制器。那是合適的。它比委託更好嗎? – Susitha
@Susitha NSUserDefaults不是你想要的...在網站會話數據被使用,因爲沒有簡單的方法在網頁之間發送數據。在Objective-C中,您可以直接通過方法傳遞數據。 –