NSUserDefaults返回(null)

时间:2013-04-23 13:50:37

标签: ios xcode nsmutablearray nsuserdefaults

我是NSUserDefaults的新手,我正在努力让自己的头脑能够理解,对于大多数人来说,这可能是直截了当的。

我正在尝试使用以下代码检索NSUserDefaults中存在的可变字符串数组:

NSMutableArray *globalAppsArray;

if([[NSUserDefaults standardUserDefaults] objectForKey:@"globalAppsArray"] != nil)
{
    NSLog(@"Array found. Contents: %@", globalAppsArray);        
}
else
{
    globalAppsArray = [[NSMutableArray alloc] initWithCapacity:0];
}

在向其添加任何新数据后,我想保存它:

[[NSUserDefaults standardUserDefaults] setObject:globalAppsArray forKey:@"globalAppsArray"];
[[NSUserDefaults standardUserDefaults] synchronize];

当我重新启动应用程序时,找到了可变数组,但内容为null

有人可以告诉我我错过了什么吗?

2 个答案:

答案 0 :(得分:4)

它应该是这样的:

NSMutableArray *globalAppsArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"globalAppsArray"];

if(globalAppsArray != nil)
{
    NSLog(@"Array found. Contents: %@", globalAppsArray);
}
else
{
    globalAppsArray = [[NSMutableArray alloc] initWithCapacity:0];
}

答案 1 :(得分:3)

检查您的代码一次,

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *globalAppsArray = [[defaults objectForKey:@"globalAppsArray"] mutableCopy];
if(globalAppsArray)
    NSLog(@"Array found. Contents: %@", globalAppsArray);
else
    globalAppsArray = [NSMutableArray array];