2011-04-22 66 views
8

我有兩個視圖控制器。在我的第一個視圖控制器中:如何獲得其他視圖控制器中的nsuserdefault值

{   
    NSString *string=textField.text; 
    NSUserDefaults *data = [NSUserDefaults standardUserDefaults]; 

    [data setObject:string forKey:@"strings"]; 
    [data synchronize]; 
} 

如何在我的其他viewcontroller中獲取字符串值?

回答

22

在這裏你可以在你的應用程序中使用它來存儲NSUserDefaults的值。

// --- Saving 

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
// saving an NSString 
[prefs setObject:@"TextToSave" forKey:@"keyToLookupString"]; 
// saving an NSInteger 
[prefs setInteger:42 forKey:@"integerKey"]; 
// saving a Double 
[prefs setDouble:3.1415 forKey:@"doubleKey"]; 
// saving a Float 
[prefs setFloat:1.2345678 forKey:@"floatKey"]; 
// This is suggested to synch prefs, but is not needed (I didn't put it in my tut) 
[prefs synchronize]; 

在這裏,您可以在應用程序中的NSUserDefaults的GET價值,無論如何使用。

// --- Retrieving 

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
// getting an NSString 
NSString *myString = [prefs stringForKey:@"keyToLookupString"]; 
// getting an NSInteger 
NSInteger myInt = [prefs integerForKey:@"integerKey"]; 
// getting an Float 
float myFloat = [prefs floatForKey:@"floatKey"]; 
3

在其他視圖控制器,

NSUserDefaults *data = [NSUserDefaults standardUserDefaults]; 
NSString *string = [data objectForKey:@"strings"]; 

這工作,因爲NSUserDefaults是一個全球性的key-value存儲,將跨類和應用程序仍然存在。

4
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; 
NSString *myString = [defaults stringForKey:@"strings"]; 

這是檢索數據的方式。請注意0​​不用於在兩個控制器之間傳遞數據。有更好的方法。

編輯:看到陝辛格的評論後

傳遞數據2個視圖控制器,你可以聲明在第二視圖控制器屬性和訪問,從目前的視圖控制器。

已經回答出色here

+1

哪些方法,例如? – Kir 2012-06-12 21:21:10

+0

我同意Kir。還有什麼其他好的方法可以在控制器之間傳遞數據? – 2013-07-28 21:08:10

4

,你可以在你寫一個類相同的代碼應用程序的任何控制器(Any類應用程序的)訪問NSUserDefaults

用於獲取字符串值使用下面的代碼

NSUserDefaults *data = [NSUserDefaults standardUserDefaults]; 
NSString *myString = [data objectForKey:@"strings"]; 
相關問題