2015-09-30 118 views
2

什麼是NsUserdefault?以及如何使用它來存儲應用程序的數據。 請清除我的懷疑,何時使用它們以及它們如何成爲有用的性能明智?NSUserdefault和核心數據

+0

按照此 - http://www.icodeblog.com/2008/10/03/iphone-programming-tutorial-savingretrieving-data-using-nsuserdefaults/ –

回答

7

使用NSUserDefaults類,您可以保存與應用程序或用戶數據相關的設置和屬性。
例如,您可以保存用戶設置的配置文件圖像或應用程序的默認配色方案。這些對象將被保存在所謂的iOS 「defaults system」中。 iOS默認系統在應用程序中的所有代碼中都可用,並且保存到默認系統的任何數據都將通過應用程序會話持續存在。這意味着,即使用戶關閉應用程序或重新啓動手機,保存的數據在下次打開應用程序時仍然可用。

性能

NSUserDefaults類內部緩存值,以便查找速度極快。與實例變量相比,[NSUserDefaults standardUserDefaults]的開銷非常小,如果您在代碼中執行了500萬次操作,您甚至不會注意到它。

1

NSUserDefaults用於保存非常輕的數據,而其他方法可以存儲更大量的數據,以便應用程序可以使用。

NSUserDefaults使得令人難以置信的容易,因爲你不必擔心文件,實體,提取......。這一切都在一行中完成。

3

NSUserDefaults類的行爲非常類似於所謂的屬性列表(又名plist)。對於他們可以存儲什麼樣的對象,平板電腦是有限的。六種類型的Plist可以存儲有:

  1. NSData的
  2. 的NSString
  3. 的NSNumber
  4. 的NSDate
  5. 的NSArray
  6. 的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以下。 但請保持儘可能輕。

+0

abhinav我有一個疑問,在nsuserdefault什麼是我們可以存儲的最大數據/大小 –

+0

請查看我更新的帖子。 @ Anbu.Karthik – Abhinav

2

這是我作爲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;