質問

次のコードでは、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];
        }

    }

どういうわけか、&quot; savedObject.value1&quot;を設定しようとすると、&quot; EXC_BAD_ACCESS&quot;が返されます。エラー。

これは基本的なメモリ管理、またはポインタ/オブジェクトの種類の混乱である可能性が非常に高いと思いますが、私はまだ学んでいます。 誰かが私を助けてくれることを願っています。 宜しくお願いします シャケリアン

役に立ちましたか?

解決

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

savedObject = [[myCustomObject alloc] init];

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

他のヒント

NSUserDefaults mutableArrayValueForKey が表示されません。 代わりに arrayForKey:を試してください。 NSArray * が得られます。

defaults から返される値は不変であるようです(ファイルからデータを取得しているので意味があります)。

mutableArrayValueForKey から返された値を確認してください。nilであると思われます。

もう一度見てみると、コードはあまり意味がありません。 savedObjectsを割り当てることはありませんが、配列に繰り返し挿入します。 値を抽出する方法でさえ正しくないようです。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top