2

を読み取ろうと、私はPLISTからデータを読み取ろう:EXC_BAD_ACCESSは、次のコードではNSArrayの

-(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

答えて

5

value1プロパティを設定した時点でsavedObjectを初期化していません。

savedObject = [[myCustomObject alloc] init]; 

をごforループの前に、それはあなたが上でプロパティを設定することができ、有効な対象となるために:あなたが追加する必要があります。

+0

あなたはそうですよ!どうもありがとう! – Sjakelien

+2

リリースまたは自動解放をそのオブジェクトに送信することを忘れないでください。 –

0

mutableArrayValueForKeyNSUserDefaultsには表示されません。 代わりにarrayForKey:を試してください。それはNSArray*になります。

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

返された値をmutableArrayValueForKeyから確認すると、それはゼロであると思われます。

あなたのコードはあまり意味がありません。 保存されたオブジェクトは割り当てられませんが、配列に繰り返し挿入します。 値を抽出していても正しいとは思われません。

私は、AppleのマニュアルでNSUserDefautlsリファレンスを調べることをお勧めします。基本的な使い方の例があります。

+0

ドキュメントによると、mutableArrayValueForKeyは "iPhone OS 2.0以降で利用可能"です。 とにかく、返された値はNILではありません。それは12のオブジェクトを含んでいます。私はそれが問題だと思う。 savedObject.value1はNSStringですが、objectAtIndex:0はオブジェクトです。私は何とかそれを変換する必要がありますか? – Sjakelien

+0

すべてのNSString(つまり、NSStringオブジェクト)はオブジェクトです。 –

+0

あなたは私のコードの作成していない意味について正しいです。幸運にも、私はここで、別の愚かな質問をするのを止めるために、ここに戻った。ありがとう! – Sjakelien