Objective c EXC\u错误访问试图读取NSArray
在以下代码中,我尝试从plist读取数据: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
-(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对象)都是对象。你说得对,我的代码没有意义。幸运的是,我及时回到这里,阻止自己再问一个愚蠢的问题。谢谢不要忘记向该对象发送释放或自动释放。