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

标签 iphone

我使用 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/

相关文章:

iphone - 多种语言的多个 SQLite 数据库?

iphone - 发布需要用户注册的 iPhone 应用程序

iphone - 使用 MFMailComposeViewController 的问题

iphone - 自定义字体在 iOS 上无法正确显示

iphone - 动态更新 UITableView 部分标题

ios - 从服务中获取数据 Objective c

iphone - 为什么我无法从 UITableView 单元格转至详细 View ?

iphone - 为什么我的变量没有被分配

iPhone 重新加载表格中的数据

iphone - 将 AUConverter 添加到 AUGraph 时出现错误 -10877