2012-06-26 46 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 - 使用allKeysforObject不檢索數組值

回答

1

在行你在哪裏得到的所有鍵([expense_ArrContents allKeysForObject:@"payer_id"];),你實際得到密鑰的對象,它是不以任何陣列的的項目。 @"player_id"current_row中添加的@"player_id"不同。事實上,也許你所有的行都有不同的對象(除非編譯器已經做了一些優化 - 可能威脅到與一個對象相同的字符串字面值,而不是爲每次迭代創建新的對象)。 嘗試創建爲@"player_id"一個NSString對象,您添加到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"];不會返回任何值,因爲在expense_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]; 
    } 
}