gpt4 book ai didi

iphone - NSUserDefaults 不加载字符串数组

转载 作者:行者123 更新时间:2023-12-03 20:43:04 24 4
gpt4 key购买 nike

在有人说这个问题之前已经被问过很多次之前,我已经浏览了大约 20 个不同的答案,并尝试了我发现的所有内容。尽管如此,我大约 5 天前才开始使用 Objective C,所以可能有一些非常简单的解决方案。

尽管以多种不同的方式调用,但 NSUserDefaults 似乎并未从默认属性列表中加载数组。在继续之前,这是我读取数组的代码:

      fishArrayMutable = [[NSMutableArray alloc] initWithArray:(NSArray*)[defaults objectForKey:@"fishArray"] copyItems:TRUE];

if (fishArrayMutable == nil)
{
fishArrayMutable = [[NSMutableArray alloc] init];
UIAlertView *alert = [[UIAlertView alloc] init];
[alert setTitle:@"fishArray = nil"];
[alert addButtonWithTitle:@"Ok"];
[alert show];
[alert release];
}

这是我编写数组的代码:

[defaults setObject:fishArrayMutable forKey:@"fishArray"];

[defaults synchronize];

现在这开始成为一个非常令人沮丧的问题,我已经研究了隔离问题的方法,并得出了它在阅读部分的结论。可变数组在头文件中声明。请帮忙,这个问题已经困扰我大约 6 个小时了......

最佳答案

我怀疑错误是以下之一:

  1. defaults 未初始化。
  2. 在阅读之前未设置 userDefaults
  3. userDefaults 会覆盖之前读取的内容。

分解每个步骤并在每个步骤之前和之后编写测试。

1) NSLog fishArrayMutable 用于验证数组内容的位置。
2) 在将 fishArrayMutable 写入默认值 NSLog 后,用户将立即默认。示例:

NSLog(@"Before writing fishArray: %@", fishArrayMutable);
[defaults setObject:fishArrayMutable forKey:@"fishArray"];
NSLog(@"After writing fishArray: %@", [[NSUserDefaults standardUserDefaults] objectForKey:@"fishArray"]);

请注意,NSLog 语句使用默认值来保持它们的自包含性。

执行类似的 NSLog 语句将读取括起来(并使读取成为两个语句):

NSLog(@"Before reading fishArray: %@", [[NSUserDefaults standardUserDefaults] objectForKey:@"fishArray"]);
NSArray *fishArray = [defaults objectForKey:@"fishArray"];
NSLog(@"After reading fishArray: %@", fishArray);
fishArrayMutable = [[NSMutableArray alloc] initWithArray:fishArray copyItems:TRUE];
NSLog(@"After creating fishArrayMutable: %@", fishArrayMutable);

那么问题应该就很明显了。

注意:由于 NSUserDefaults 而不是:
,数组项本身将是不可变的fishArrayMutable = [[NSMutableArray alloc] initWithArray:fishArray copyItems:TRUE];
您应该能够只使用 mutableCopy:
fishArrayMutable = [fishArray mutableCopy];

关于iphone - NSUserDefaults 不加载字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10139074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com