of 要素がNSMutableArray
あり、いくつかの要素に条件付きでカスタム フラグを設定できるようにしたいと考えています。たとえば、特定の要素がエラーを返した場合のエラー数。カウントが 3 を超える場合、この要素を配列から削除したいと考えています。
そのような動作を実装する最良の方法は何でしょうか?
of 要素がNSMutableArray
あり、いくつかの要素に条件付きでカスタム フラグを設定できるようにしたいと考えています。たとえば、特定の要素がエラーを返した場合のエラー数。カウントが 3 を超える場合、この要素を配列から削除したいと考えています。
そのような動作を実装する最良の方法は何でしょうか?
いくつかのオプション:
オブジェクトごとにカウンターを保持する個別の配列を用意します。元の配列から 1 つを削除するときは、対応するカウンター オブジェクトを削除することを忘れないでください。
int 値と、配列に格納するその他のオブジェクトを含む小さなクラスを作成し、NSMutableArray にそのオブジェクトを入力します。次に、オブジェクトとエラーカウンターを同じ場所に配置します
編集:フラグなどを追加したい場合は、2番目のオプションが最もスケーラブルです。
可変辞書で満たされた可変配列を作成する方がよいでしょう。これにより、配列内の各インデックスに対応する 2 つのキーを持つことができます。
NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"some text, or what ever you want to store",@"body",
[NSNumber numberWithUnsignedInteger:0],@"errorCount",
nil];
[myMutableArray addObject:mutableDictionary];
次に、配列内の特定の項目のエラー カウントをインクリメントする方法の基本的な例を次に示します。
- (void)errorInArray:(NSUInteger)idx
{
if ([[[myMutableArray objectAtIndex:idx] objectForKey:@"errorCount"] unsignedIntegerValue] == 2) {
[myMutableArray removeObjectAtIndex:idx];
}else{
NSUInteger temp = [[[myMutableArray objectAtIndex:idx] objectForKey:@"errorCount"] unsignedIntegerValue];
temp ++;
[[myMutableArray objectAtIndex:idx] setObject:[NSNumber numberWithUnsignedInteger:temp] forKey:@"errorCount"];
}
}
上記で示唆したように、必ずしもカスタム オブジェクトを作成する必要はありません。可変配列を作成し、オブジェクト/キーを使用して辞書を作成し、その辞書を配列に追加します。
NSMutableArray *myArray = [[NSMutableArray alloc] init] autorelease];
NSMutableDictionary *myDictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"John Doe", @"elementName",
[NSNumber numberWithInt:0], @"errorCount",
nil];
[myArray addObject:myDictionary];