在下面的代码中,我尝试从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

有帮助吗?

解决方案

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

savedObject = [[myCustomObject alloc] init];
for 循环之前

,以使其成为可以设置属性的有效对象。

其他提示

我在 NSUserDefaults 中看不到 mutableArrayValueForKey 。 请尝试 arrayForKey:,它将为您提供 NSArray *

似乎从 defaults 返回的值是不可变的(当你从文件中获取东西时有意义)。

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top