私はUserDefaultsで動作するオブジェクトを持っています。 Arrayにあるものをuserdefaultsに追加し、イベントが発生したときに削除します。 そのオブジェクトは複数のインスタンスを持つことができます。iPhone - NSMutableArrayを解析してオブジェクトを削除する
*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSCFArray: 0x66061e0> was mutated while being enumerated.<CFArray 0x66061e0 [0xe38400]>{type = mutable-small, count = 3, values = (
私はこのような私の項目を削除します:
// ==========================================================================================================
- (void) deleteSavedItem:(NSString*)keycodeToDelete
// ==========================================================================================================
{
NSMutableArray* savedItems = [[self loadAllSavedItems] mutableCopy];
for (NSDictionary* dict in savedItems) {
NSString* keycode = [dict objectForKey:@"keycode"];
if ([keycode isEqualToString:keycodeToDelete])
[savedItems removeObject:dict];
}
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue:savedItems forKey:@"savedItems"];
[defaults synchronize];
[savedItems release];
}
// ==========================================================================================================
- (NSArray*) loadAllSavedItems
// ==========================================================================================================
{
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
NSArray* savedItems = [defaults arrayForKey:@"savedItems"];
if (savedItems == nil) savedItems = [NSArray array];
return savedItems;
}
は、どのように私は、その配列から物事を追加/削除することができるさまざまなオブジェクトのインスタンスから来る
これらの呼び出しが衝突し、衝突を生成するようです衝突することなく?
このクラッシュの原因となるデフォルトを使用する多くのオブジェクトが原因であるかどうかはわかりません。私はこれが私が配列を解析する方法であると考えています。
私は自分のオブジェクトのインスタンスを保持し、プロセスのパラレルを実行しておく必要があります。
本当ですか?私の配列にはNSDictionaryオブジェクトが含まれています。キーコードは、キーが「キーコード」であるアイテムの値です。 – Oliver
@Oliver私は確信しています。私はそれがうまくいくようにキーパスを提供しています。あなたは辞書でそれを行うことができます。あなたはそれをテストすることができるはずです。 –
私はお試しください。配列が.keycode属性を持つカスタムクラスinsatncesの配列だった場合、これを行う方法は何かを聞かせてもらえますか? – Oliver