在下面的代码中,我尝试从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”错误。
我意识到这很可能是基本的内存管理,或指针/对象的混乱,但我还在学习。 我希望有人可以帮助我。 最好的祝福 Sjakelien
答案 0 :(得分:5)
您在设置savedObject
属性时尚未初始化value1
。您需要添加:
savedObject = [[myCustomObject alloc] init];
在for
循环之前,以使其成为可以设置属性的有效对象。
答案 1 :(得分:0)
我在mutableArrayValueForKey
中看不到NSUserDefaults
。
请改为arrayForKey:
,这将为您提供NSArray*
。
似乎从defaults
返回的值是不可变的(当你从文件中获取东西时有意义)。
检查mutableArrayValueForKey
的返回值,我怀疑它是零。
第二眼看,你的代码没有多大意义。 在任何时候你都没有分配savedObjects,但是你反复将它插入到数组中。 即使你提取值的方式似乎也不正确。
我建议在Apple文档中查看NSUserDefautls参考,它有基本用法示例。