2

在下面的代码中,我尝试从 plist 中读取数据:

 -(void)readPreferences 
    {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        NSMutableArray * myAppDefaults  = [defaults mutableArrayValueForKey:@"LastList"];
        myCustomObject * savedObject;
        NSUInteger i;
        for (i = 0; i < [myAppDefaults  count]; i++) 
        {
            NSArray * thisArray = [myAppDefaults  objectAtIndex:i];

            savedObject.value1 = [thisArray objectAtIndex:0];
            savedObject.value2 = [thisArray objectAtIndex:1];
            savedObject.value3 = [thisArray objectAtIndex:2];
            savedObject.value4 = [myAppDefaults  objectAtIndex:3];

            [objectsArray addObject:savedObject];
        }

    }

不知何故,当我尝试设置“savedObject.value1”时,出现“EXC_BAD_ACCESS”错误。

我意识到这很可能是基本的内存管理,或者指针/对象的混乱,但我仍在学习。我希望有人可以在这里帮助我。最好的问候

4

2 回答 2

5

savedObject您在设置value1属性时尚未初始化。您将需要添加:

savedObject = [[myCustomObject alloc] init];

在您的for循环之前,以使其成为您可以设置属性的有效对象。

于 2009-06-21T14:57:05.433 回答
0

我没有看到mutableArrayValueForKeyNSUserDefaults试试arrayForKey:吧,那会给你NSArray*

似乎从返回的值defaults是不可变的(因为您从文件中获取内容是有意义的)。

检查从 的返回值mutableArrayValueForKey,我怀疑它是零。

再看你的代码没有多大意义。您在任何时候都不会分配 savedObjects,但您会反复将其插入数组中。即使您提取值的方式似乎也不正确。

我建议查看 Apple 文档中的 NSUserDefautls 参考,它有基本用法的示例。

于 2009-06-21T14:53:27.533 回答