2012-06-26 2 views
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 для определенного ключа.NSMutableDictionary - using allKeysforObject не извлекает значения массива

ответ

1

в строке, где вы получите все ключи ([expense_ArrContents allKeysForObject:@"payer_id"];) вы фактически получаете ключи для объекта, который не является ни в одном из массива Предметы. Это @"player_id" - это другой объект, чем @"player_id", который вы добавили в current_row. На самом деле, возможно, все ваши строки имеют разные объекты @"player_id" (за исключением того, что компилятор сделал некоторую оптимизацию - возможно, это угрожает тому же строковому литералу, что и один объект, вместо создания нового объекта для каждой итерации). Попробуйте создать объект NSString для @"player_id", который вы добавляете к current_row, а затем получить все ключи для того же объекта:

NSString* playerId = @"player_id"; 
for(){ 
    NSMutableArray *current_row = [NSMutableArray arrayWithObjects: playerId,...]; 
... 
} 
NSArray *newArray = [expense_ArrContents allKeysForObject:playerId]; 
0

Ваш NSArray *newArray = [expense_ArrContents allKeysForObject:@"payer_id"]; не будет возвращать какое-либо значение, потому что в cost_ArrContents нет такого ключа (@ "payer_id"), вместо этого есть такие ключи, как 1,2,3 и т. Д. Какое ваше требование? Хотите увидеть, что все ключи которые есть в expense_ArrContents просто войти

NSArray*keys=[expense_ArrContents allKeys]; 
+0

Я хочу, чтобы получить список ключей, содержащих конкретный objectvalue, который находится в массиве nsmutabledictionary – itechnician

+1

Но ваш словарь не содержит никакого объекта, который является @ "payer_id", с другой стороны, он содержит массив как объект, который имеет этот объект. И весь ключ будет иметь этот объект в соответствии с вашим кодом. Итак, на каком основании вы находите, какой ключ содержит этот объект? –

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]; 
    } 
} 
Смежные вопросы