NSArrayを読み取ろうとするEXC_BAD_ACCESS
-
06-07-2019 - |
質問
次のコードでは、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リファレンスを参照することをお勧めします。基本的な使用例があります。
所属していません StackOverflow