我正在尝试使用NSUserDefaults保存数组。我已经让它在我的应用程序的其他部分工作,我似乎无法弄清楚为什么它现在不起作用。似乎它正在向userDefaults-array添加(null),但是当我NSLog我要添加的内容([mainDelegate.globalValdaFragor objectAtIndex:i])时,我可以看到我想要输入的值。
问题似乎是我无法向“felPaFragor” - 阵列添加任何内容,因为当我尝试NSLog时,我得到(null),当我尝试使用另一个“随机”数组时,它工作了。
RPAppDelegate *mainDelegate = (RPAppDelegate *)[[UIApplication sharedApplication]delegate];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *felPaFragor = [[NSMutableArray alloc] init];
felPaFragor = [[defaults valueForKey:@"felFragorArray"] mutableCopy];
[felPaFragor addObject:[mainDelegate.globalValdaFragor objectAtIndex:i]];
[defaults setObject:felPaFragor forKey:@"felFragorArray"];
非常感谢任何帮助。
编辑:我想我弄明白了。似乎我试图制作一个空数组的mutableCopy,而这反过来又使我的“felPaFragor”-array越野车。添加它使它工作。
felPaFragor = [[NSMutableArray alloc] init];
if ([[defaults valueForKey:@"felFragorArray"] objectAtIndex:0] != NULL) {
felPaFragor = [[defaults valueForKey:@"felFragorArray"] mutableCopy];
}
答案 0 :(得分:1)
如果执行此操作后:
NSMutableArray *felPaFragor = [[NSMutableArray alloc] init];
felPaFragor = [[defaults valueForKey:@"felFragorArray"] mutableCopy];
您的felPaFragor
为nil
,[defaults valueForKey:@"felFragorArray"]
很可能正在返回nil
。
因此,您的密钥存在问题,或者与该密钥关联的对象可能从未存储在NSUserDefaults
中。
答案 1 :(得分:1)
首先:你使用ARC吗?
如果没有,你在这里有内存泄漏:
NSMutableArray *felPaFragor = [[NSMutableArray alloc] init];
felPaFragor = [[defaults valueForKey:@"felFragorArray"] mutableCopy];
第一个像创建和保留NSMutableArray从未发布(并且从未使用过:你根本不需要那条线,ARC或不是ARC)
只需使用:
NSMutableArray *felPaFragor = [[defaults valueForKey:@"felFragorArray"] mutableCopy];
说,塞尔吉奥的回答可能是正确的......你的价值关键:@“felFragorArray”可能在你此时调用时从未设置过