ios 如何在其他视图控制器中获取 nsuserdefault 值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/5752468/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-30 19:40:12  来源:igfitidea点击:

How to get the nsuserdefault value in other viewcontrollers

iosobjective-ccocoa-touchuiviewcontroller

提问by Aravindhan

I have two viewcontrollers. In my first 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?

如何在我的其他视图控制器中获取字符串值?

回答by Chetan Bhalara

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

回答by Jhaliya

you can access NSUserDefaultsin 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"];

回答by Krishnabhadra

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

THis is the way to retrieve the data. Please note NSUserDefaultis not used to pass data between two controllers. There are better methods for that.

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

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.

它已经在这里得到了精彩的回答。

回答by Chetan

In the other ViewController,

在另一个 ViewController 中,

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

This will work because NSUserDefaultsare a global key-value store that will persist across classes and applications.

这将起作用,因为NSUserDefaults是一个全局键值存储,它将跨类和应用程序持续存在。