简体   繁体   English

如何在其他viewcontrollers中获取nsuserdefault值

[英]How to get the nsuserdefault value in other viewcontrollers

I have two viewcontrollers. 我有两个viewcontrollers。 In my first viewcontroller: 在我的第一个viewcontroller中:

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

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

How do I get the string value in my other viewcontroller? 如何在我的其他viewcontroller中获取字符串值?

Here you can use this in anyway in your application for store value of NSUserDefaults. 在这里,您可以在您的应用程序中使用它来获取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];

Here you can use this in anyway in your application for get value of NSUserDefaults. 在这里,您可以在应用程序中使用它来获取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"];
NSUserDefaults * defaults =  [NSUserDefaults standardUserDefaults]; 
NSString *myString = [defaults stringForKey:@"strings"];

THis is the way to retrieve the data. 这是检索数据的方法。 Please note NSUserDefault is not used to pass data between two controllers. 请注意, NSUserDefault不用于在两个控制器之间传递数据。 There are better methods for that. 有更好的方法。

Edit : After seeing Shaan Singh's comment 编辑:看过Shaan Singh的评论

To pass data 2 view controllers you can declare a property in second view controller and access that from the present view controller. 要传递数据2视图控制器,您可以在第二个视图控制器中声明属性,并从当前视图控制器访问该属性。

It is already answered brilliantly here . 它已经在这里得到了很好的回答。

you can access NSUserDefaults in any controller (Any class of your application) of your application with the same code you have written in one class. 您可以使用在一个类中编写的相同代码访问应用程序的任何控制器(应用程序的任何类)中的NSUserDefaults

for getting the string value use the below code 获取字符串值使用下面的代码

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

In the other ViewController, 在另一个ViewController中,

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

This will work because NSUserDefaults are a global key-value store that will persist across classes and applications. 这将起作用,因为NSUserDefaults是一个全局键值存储,它将在类和应用程序之间保持NSUserDefaults

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM