gpt4 book ai didi

iphone - 如何使用 NSUserDefaults 从一个 View 读取值到另一个 View ?

转载 作者:行者123 更新时间:2023-12-03 19:40:22 27 4
gpt4 key购买 nike

我使用 NSUserDefaults 来存储值。我在 NSUserDefaults 中存储一些整数值,如第一个 View 中所示。

我在接口(interface)文件中声明如下..

NSUserDefaults *prefs;
@property(nonatomic,retain) IBOutlet NSUserDefaults *prefs;

然后我在类文件中使用如下

   @synthesize passwordfield,prefs;

这里的passwordfield是UITextField的名称

NSInteger myInteger = [passwordfield.text integerValue];
[prefs setInteger:myInteger forKey:@"integerKey"];
[prefs synchronize];
NSInteger myInt = [prefs integerForKey:@"integerKey"];
NSLog(@"My integer Value: %d",myInt);

然后我使用导航 Controller 移至下一个 View 。

但是我无法从第一个 View 中读取 NSUserDefaults 的值。

我在第二个 View 中使用了如下代码。

PasswordCheckViewController *nextController = [[PasswordCheckViewController alloc] initWithNibName:@"PasswordCheckViewController" bundle:nil];
NSLog(@"Pass in Next: %d",[nextController.prefs integerForKey:@"integerKey"]);

但是输出如下。

 Pass in Next: 0

如何使用 NSUserDefaults 获取从第一个 View 到第二个 View 的值?

最佳答案

您所做的事情是错误的,NSUserDefaults 不是 IBOutletIBOutlet 用于引用 InterfaceBuilder 控件。

NSUserDefault 通常用于存储一些首选项值。
通常,您可以通过调用 standardUserDefaults 类方法来获取 NSUserDefaults 对象来使用 NSUserDefaults 类。此方法返回一个全局 NSUserDefaults 对象,其中包含已初始化的搜索列表。使用 objectForKey:setObject:forKey: 方法获取和设置默认值。请注意,默认值只能是属性列表对象:NSDataNSStringNSNumberNSDateNSArrayNSDictionary
在您的情况下,您正在创建一个不需要的 IBOutlet 。这样做

  NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
NSInteger myInteger = [passwordfield.text integerValue];
[prefs setObject:myInteger forKey:@"integerKey"];
NSInteger myInt = [prefs objectForKey:@"integerKey"];

这将为您提供一个同步的 NSUserDefaults,这样您就不需要将任何内容存储为 ivar。
您可以从应用程序内的任何类访问该对象的值

关于iphone - 如何使用 NSUserDefaults 从一个 View 读取值到另一个 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4268394/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com