1

我遇到了奇怪的行为NSUserDefaults。我最初将一个数组存储到我的AppDelegate.m中的用户默认值:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *weekdayIDs = [defaults objectForKey:@"weekdayIDs"];

if (weekdayIDs == nil) {
weekdayIDs = [NSArray arrayWithObjects:@"su", @"mo", @"tu", @"we", @"th", @"fr", @"sa", nil];
[defaults setObject:weekdayIDs forKey:@"weekdayIDs"];
}

[defaults synchronize];

现在在不同的视图控制器ContentViewController.m中,我想检索数组:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *weekdayIDs = [defaults objectForKey:@"weekdayIDs"];

但我只是得到一个没有对象的数组,尽管它的count == 7. 我也使用过arrayForKey:,但结果相同。我从断点添加了一个屏幕截图。

在此处输入图像描述

我经常使用NSUserDefaults,但目前我有点坚持。这可能是一个愚蠢的错误,有人愿意帮忙吗?

太感谢了!

- 更新:

我还认为首先可能是 NSArray 的 init 有问题,但即使用手动创建的对象替换它NSString *dwid_su = [NSString stringWithString:@"su"];也不起作用。

4

1 回答 1

2

您的代码完美运行。

只需打印数组的描述,您就会看到您想要的。

右键单击weekdayIDs变量并选择Print Description of weekdayIDs

或通过 lldb 调试器控制台使用po weekdayIDs

或者NSLog(@"%@", weekdayIDs);

这里是结果。

在此处输入图像描述

于 2013-03-25T21:48:22.993 回答