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」エラーが発生します。

これはおそらく基本的なメモリ管理、またはポインター/オブジェクトの種類の混乱である可能性が高いことを認識していますが、まだ学習中です。誰かがここで私を助けてくれることを願っています。敬具Sjakelien

4

2 に答える 2

5

プロパティsavedObjectを設定した時点で初期化していません。value1以下を追加する必要があります。

savedObject = [[myCustomObject alloc] init];

forプロパティを設定できる有効なオブジェクトにするために、ループの前に。

于 2009-06-21T14:57:05.433 に答える
0

見えませんmutableArrayValueForKey。代わりにNSUserDefaults試してみてください。arrayForKey:NSArray*

から返される値defaultsは不変のようです (ファイルから取得しているので理にかなっています)。

からの戻り値を確認してくださいmutableArrayValueForKey。おそらく nil です。

よく見ると、コードはあまり意味がありません。保存されたオブジェクトを割り当てることはありませんが、配列に繰り返し挿入します。値を抽出する方法でさえ、正しくないようです。

Apple ドキュメントの NSUserDefautls リファレンスを参照することをお勧めします。基本的な使用例があります。

于 2009-06-21T14:53:27.533 に答える