如何在其他视图控制器中获取 nsuserdefault 值
Posted
技术标签:
【中文标题】如何在其他视图控制器中获取 nsuserdefault 值【英文标题】:How to get the nsuserdefault value in other viewcontrollers 【发布时间】:2011-04-22 05:12:04 【问题描述】:我有两个视图控制器。在我的第一个视图控制器中:
NSString *string=textField.text;
NSUserDefaults *data = [NSUserDefaults standardUserDefaults];
[data setObject:string forKey:@"strings"];
[data synchronize];
如何在我的其他视图控制器中获取字符串值?
【问题讨论】:
【参考方案1】:在这里,您可以在应用程序中使用它来存储 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"];
【讨论】:
【参考方案2】:您可以使用在一个类中编写的相同代码在应用程序的任何控制器(应用程序的任何类)中访问NSUserDefaults
。
获取字符串值使用下面的代码
NSUserDefaults *data = [NSUserDefaults standardUserDefaults];
NSString *myString = [data objectForKey:@"strings"];
【讨论】:
【参考方案3】:NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
NSString *myString = [defaults stringForKey:@"strings"];
这是检索数据的方法。请注意NSUserDefault
不用于在两个控制器之间传递数据。有更好的方法。
编辑:在看到 Shaan Singh 的评论后
要传递数据 2 个视图控制器,您可以在第二个视图控制器中声明一个属性并从当前视图控制器访问它。
已经精彩回答here。
【讨论】:
我同意基尔的观点。在控制器之间传递数据还有哪些好方法?【参考方案4】:在另一个 ViewController 中,
NSUserDefaults *data = [NSUserDefaults standardUserDefaults];
NSString *string = [data objectForKey:@"strings"];
这将起作用,因为NSUserDefaults
是一个全局键值存储,将跨类和应用程序持续存在。
【讨论】:
以上是关于如何在其他视图控制器中获取 nsuserdefault 值的主要内容,如果未能解决你的问题,请参考以下文章