0
NSMutableDictionary *expense_ArrContents = [[NSMutableDictionary alloc]init];
for (int i = 1; i<=4; i++) {
    NSMutableArray *current_row = [NSMutableArray arrayWithObjects:@"payer_id",@"Expense_Type_id",@"Category_Id",@"SubCategory_Id",nil];
    [expense_ArrContents setObject:current_row forKey: [NSNumber numberWithInt:i]];
}
NSArray *newArray = [expense_ArrContents allKeysForObject:@"payer_id"];
NSLog(@"%@",[newArray description]);

特定のキーのnsmutabledictionaryに格納されている値の配列にある特定のオブジェクトを含むキー値のリストを取得したいと思います。

4

3 に答える 3

1

すべてのキーを取得する行 ( [expense_ArrContents allKeysForObject:@"payer_id"];) では、配列のどの項目にも含まれていないオブジェクトのキーを実際に取得します。これは、で追加し@"player_id"た とは異なるオブジェクトです。実際、すべての行に異なるオブジェクトがある可能性があります (コンパイラーが何らかの最適化を行った場合を除きます。反復ごとに新しいオブジェクトを作成するのではなく、同じ文字列リテラルを 1 つのオブジェクトとして脅かす可能性があります)。に追加するNSString オブジェクトを作成してから、同じオブジェクトのすべてのキーを取得してみてください。@"player_id"current_row@"player_id"@"player_id"current_row

NSString* playerId = @"player_id";
for(){
    NSMutableArray *current_row = [NSMutableArray arrayWithObjects: playerId,...];
...
}
NSArray *newArray = [expense_ArrContents allKeysForObject:playerId];
于 2012-06-27T14:46:36.440 に答える
0

これを試して :

NSMutableArray *array_key=[[NSMutableArray alloc]init];
for (NSString *key in expense_ArrContents) {    
    if ([[expense_ArrContents objectForKey:key] containsObject:@"payer_id"]) {
        [array_key addObject:key];
    }
}
于 2012-06-26T12:09:32.613 に答える
0

NSArray*newArray = [expense_ArrContents allKeysForObject:@"payer_id"];は値を返しません。expense_ArrContents にはそのようなキー (@"payer_id") がなく、代わりに 1、2、3 などのキーがあるためです。ログ

NSArray*keys=[expense_ArrContents allKeys];
于 2012-06-26T11:34:24.173 に答える