从NSUserDefaults中检索NSArray将返回空数组

时间:2013-03-25 21:33:38

标签: iphone objective-c nsstring nsarray nsuserdefaults

我遇到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:,但结果相同。我在断点处添加了截图。

enter image description here

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

非常感谢你!

- 更新:

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

1 个答案:

答案 0 :(得分:2)

您的代码运作正常。

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

右键单击weekdayIDs变量,然后选择打印工作日的描述

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

使用

NSLog(@"%@", weekdayIDs);

结果。

enter image description here