2

NSMutableArray にオブジェクトを挿入しようとすると、「Program received signal: SIGABRT」エラーが発生しますが、その理由がわかりません。

これが私のコードです。具体的にinsertObject:valueは、エラーの原因となっているのは です。

NSMutableDictionary *myDictionary = [NSMutableDictionary dictionary];
[myDictionary setValue:valueName.text forKey:kValueName];
[myDictionary setObject:subValuesList forKey:kSubValuesList];

MyAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
int position = appDelegate.position;

NSMutableArray *valuesList = [[NSUserDefaults standardUserDefaults] objectForKey:kValuesArray];
[valuesList insertObject:myDictionary atIndex:position];
4

2 に答える 2

7

NSUserDefaults可変オブジェクトを値として設定した場合でも、から返される値は不変です。

から配列を取得した後、変更可能なコピーを作成する必要がありますNSUserDefaults。幸いなことに、プロトコルにNSArray準拠しているため、配列にメッセージを送信するだけです。NSMutableCopyingmutableCopy

NSMutableArray *valuesList = [[[NSUserDefaults standardUserDefaults] objectForKey:kValuesArray] mutableCopy];

Memory Management RulesmutableCopyに従って、によって返されるオブジェクトを所有していることに注意してください。つまり、使い終わったらリリースする必要があります。

于 2011-10-18T22:00:24.293 に答える
0

NSData を使用して配列を保存および取得する必要があります。重複の可能性があります。

iPhoneでNSUserDefaultsを使用して整数配列を保存できますか?

于 2011-10-18T22:02:09.270 に答える