如何在其他viewcontrollers中获取nsuserdefault值

时间:2011-04-22 05:12:05

标签: ios objective-c cocoa-touch uiviewcontroller

我有两个viewcontrollers。在我的第一个viewcontroller中:

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

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

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

4 个答案:

答案 0 :(得分:24)

在这里,您可以在应用程序中使用它来获取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的值。

// --- 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"];

答案 1 :(得分:4)

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

这是检索数据的方法。请注意NSUserDefault不用于在两个控制器之间传递数据。有更好的方法。

编辑:看到Shaan Singh的评论后

要传递数据2视图控制器,您可以在第二个视图控制器中声明属性,并从当前视图控制器访问该属性。

它已经得到了出色的回答here

答案 2 :(得分:4)

您可以使用在一个类中编写的相同代码访问应用程序的任何控制器(应用程序的任何类)中的NSUserDefaults

获取字符串值使用以下代码

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

答案 3 :(得分:3)

在另一个ViewController中,

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

这将起作用,因为NSUserDefaults是一个全局键值存储,它将在类和应用程序之间保持不变。