Objective c EXC\u错误访问试图读取NSArray

Objective c EXC\u错误访问试图读取NSArray,objective-c,cocoa,cocoa-touch,nsmutablearray,nsuserdefaults,Objective C,Cocoa,Cocoa Touch,Nsmutablearray,Nsuserdefaults,在以下代码中,我尝试从plist读取数据: -(void)readPreferences { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSMutableArray * myAppDefaults = [defaults mutableArrayValueForKey:@"LastList"]; myCustomObject * savedObj

在以下代码中,我尝试从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];
        }

    }
-(无效)读取首选项
{
NSUserDefaults*默认值=[NSUserDefaults standardUserDefaults];
NSMutableArray*myAppDefaults=[默认值mutableArrayValueForKey:@“LastList”];
myCustomObject*savedObject;
NSUI;
对于(i=0;i<[myAppDefaults计数];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”错误

我意识到这很可能是基本的内存管理,或者是指针/对象的混乱,但我还在学习。 我希望有人能帮我。 顺致敬意,
Sjakelien

我在
NSUserDefaults
中没有看到
mutableArrayValueForKey
。 请尝试
arrayworky:
,这将为您提供
NSArray*

似乎从
默认值返回的值是不可变的(从文件中获取内容时有意义)

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

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


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

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

savedObject = [[myCustomObject alloc] init];

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

根据文档,mutableArrayValueForKey“在iPhone OS 2.0及更高版本中可用”。无论如何,返回值不是零。它包含12个对象。我想这就是问题所在。savedObject.value1是一个NSString,而objectAtIndex:0是一个对象。也许我应该以某种方式转换它?所有的NSString(即NSString对象)都是对象。你说得对,我的代码没有意义。幸运的是,我及时回到这里,阻止自己再问一个愚蠢的问题。谢谢不要忘记向该对象发送释放或自动释放。