什麼是NsUserdefault?以及如何使用它來存儲應用程序的數據。 請清除我的懷疑,何時使用它們以及它們如何成爲有用的性能明智?NSUserdefault和核心數據
回答
使用NSUserDefaults
類,您可以保存與應用程序或用戶數據相關的設置和屬性。
例如,您可以保存用戶設置的配置文件圖像或應用程序的默認配色方案。這些對象將被保存在所謂的iOS 「defaults system」
中。 iOS默認系統在應用程序中的所有代碼中都可用,並且保存到默認系統的任何數據都將通過應用程序會話持續存在。這意味着,即使用戶關閉應用程序或重新啓動手機,保存的數據在下次打開應用程序時仍然可用。
性能
的NSUserDefaults
類內部緩存值,以便查找速度極快。與實例變量相比,[NSUserDefaults standardUserDefaults]
的開銷非常小,如果您在代碼中執行了500萬次操作,您甚至不會注意到它。
NSUserDefaults用於保存非常輕的數據,而其他方法可以存儲更大量的數據,以便應用程序可以使用。
NSUserDefaults使得令人難以置信的容易,因爲你不必擔心文件,實體,提取......。這一切都在一行中完成。
NSUserDefaults類的行爲非常類似於所謂的屬性列表(又名plist)。對於他們可以存儲什麼樣的對象,平板電腦是有限的。六種類型的Plist可以存儲有:
- NSData的
- 的NSString
- 的NSNumber
- 的NSDate
- 的NSArray
- 的NSDictionary
用法: NSUserDefaults
用於小號破壞屬於用戶設置的值,即使應用程序被殺並重新啓動也需要記住。話雖如此,正如另一個答案中發佈的那樣,我們只應在NSUserDefaults
中加入輕量級對象。
對於其他重人保存並重新加載用戶文件系統。對於涉及搜索已保存數據的內容,請使用核心數據。
寫NSUserDefaults
:
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject("Your Object", forKey: "yourKey")
從NSUserDefaults
閱讀:
let defaults = NSUserDefaults.standardUserDefaults()
if let value = defaults.stringForKey("yourKey")
{
print(value)
}
其他有用的便捷方法:
func setBool(value: Bool, forKey defaultName: String)
func setInteger(value: Int, forKey defaultName: String)
func setFloat(value: Float, forKey defaultName: String)
func setDouble(value: Double, forKey defaultName: String)
func setObject(value: AnyObject?, forKey defaultName: String)
func setURL(url: NSURL, forKey defaultName: String)
存儲大小:
只要有一個在iPhone/iPad上有足夠的空間,可以存儲NSUserDefault值。所有這些值都存儲在.plist文件中,並且該文件非常小,大部分時間都在1 kb以下。 但請保持儘可能輕。
abhinav我有一個疑問,在nsuserdefault什麼是我們可以存儲的最大數據/大小 –
請查看我更新的帖子。 @ Anbu.Karthik – Abhinav
這是我作爲NSDefaultUser演示使用的一段代碼。
保存數據
NSString * name = _tf_name.text; NSString * email = _tf_email.text; int age = [[_tf_age text] integerValue];
// Create Instance of NSUserDefaults
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
// Set the object and YOU name the key, we are defining the key here
[defaults setObject:name forKey:@"firstName"];
[defaults setObject:email forKey:@"email"];
[defaults setInteger:age forKey:@"age"];
// Call Sync to Save Objects
[defaults synchronize];
//加載數據
// Get Saved Objects
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *name = [defaults objectForKey:@"firstName"];
NSString *email = [defaults objectForKey:@"email"];
int age = [defaults integerForKey:@"age"];
NSString *ageString = [NSString stringWithFormat:@"%i", age];
// Load UI
_tf_name.text = name;
_tf_email.text = email;
_tf_age.text = ageString;
- 1. 核心數據和核心位置
- 2. iOS:在覈心數據中使用GCD和核心數據
- 3. 備份和恢復核心數據的SQLite(核心數據)
- 4. UITableView與核心數據和非核心數據源
- 5. UIAlertView中和核心數據
- 6. 核心數據,KVO和NSInternalInconsistencyException
- 7. 核心數據和NSOperation
- 8. 核心數據和CLGeocoder
- 9. UIManagedDocument和核心數據
- 10. 核心數據和NSManagedObject
- 11. 核心數據和關係
- 12. RestKit和核心數據
- 13. 核心數據和didSelectRowAtIndexPath
- 14. 核心數據和JSON
- 15. 核心數據和@dynamic
- 16. 的NSLog和核心數據
- 17. InAppSettingsKit和核心數據
- 18. 核心數據和併發
- 19. 核心數據和陣列
- 20. UISearchDisplayController,UITableView和核心數據
- 21. NSTreeController,NSOutlineview和核心數據
- 22. 核心數據和主題
- 23. iOS GHUnit和核心數據
- 24. GCD和核心數據
- 25. 核心數據,iCloud和Cloudkit
- 26. 核心數據和TabViewController
- 27. UICollectionView和核心數據
- 28. 核心數據和MySQL
- 29. Dropbox,核心數據和JSON
- 30. 核心數據和@unionOfSets
按照此 - http://www.icodeblog.com/2008/10/03/iphone-programming-tutorial-savingretrieving-data-using-nsuserdefaults/ –