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"对象不同。实际上,也许您的所有行都有不同的对象(除非编译器进行了一些优化 - 也许它威胁将相同的字符串文字作为一个对象,而不是为每次迭代创建新对象)。尝试为添加到的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

您的 NSArray*newArray = [expense_ArrContents allKeysForObject:@"payer_id"];不会返回任何值,因为在 fee_ArrContents 中没有这样的键(@“payer_id”),而是有 1、2、3 等键。您的要求是什么?想看看 fee_ArrContents 中的所有键是什么日志

NSArray*keys=[expense_ArrContents allKeys];
于 2012-06-26T11:34:24.173 回答
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 回答