-1

我有一个包含 NSDictionary 的数组。每个字典只包含一个键值对。我想获取数组中的所有键。我可以轻松地通过数组中的键获取所有值。请告诉我如何获取单独数组中的所有键

我的字典数组看起来像

(
        {
        key = array;
    },
        {
        key1 = Array;
    },
        {
        key2 = With;
    },
        {
        key3 = dict;
    },
        {
        key4 = hello;
    }
)

我想要数组有 [key1,key2,key3,key4] 谢谢。

4

6 回答 6

3

我仍然担心在您的数组中的多个字典中具有相似键的一种情况。任何 Dictionary 的主要内容是它的每个内容都必须有不同的。因此,我建议您使用一种解决方案,该解决方案可以从具有不同keys的 Dictionary 中生成 Array of Keys 。

输入 :

(
    {
        x = 1;
        y = 2;
    },
        {
        y = 3;
        z = 4;
    },
        {
        x = 6;
        z = 5;
    }
)

示例代码:

NSArray *uniqueKeys = [arrayWithKeys valueForKeyPath:@"@distinctUnionOfArrays.@allKeys"];

输出 :

(
    y,
    z,
    x
)
于 2013-09-20T11:04:19.887 回答
0

我知道这个问题说“没有循环”,但是这个对枚举的迭代很好而且很干净。

//myArray is your array that is "containing NSDictionary(s)"

// Create an array to store the keys
NSMutableArray *arrayWithKeys = [[NSMutableArray alloc] initWithCapacity:[myArray count];

// Iterate through the array 
for (NSDictionary *dict in myArray) {
 [arrayWithKeys addObject:[dict allkeys]]; // add the key 
}
于 2013-09-20T10:58:14.220 回答
0
 NSArray *yourArray = @[@{@"a":@"1"},@{@"aa":@"1"},@{@"aaa":@"1"},@{@"aaaa":@"1"},@{@"aaaaa":@"1"}];

    NSMutableArray *keys =  [NSMutableArray array];

    [yourArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

        [keys addObjectsFromArray:[obj allKeys]];

    }];

    NSLog(@"%@",keys);
于 2013-09-20T11:04:15.933 回答
0

为什么不创建自己的课程?

这将简化许多事情。

考虑到您创建了一个ModelClass使用属性key和调用的类value,您可以这样做:

NSArray *keys = [arrayWithKeys valueForKeyPath:@"@distinctUnionOfObjects.key"];
于 2013-09-20T11:15:18.940 回答
0
NSMutableArray* array = [[NSMutableArray alloc] initWithCapacity:0];
for (int j=0; j<[yourArray count]; j++)
{
    NSDictionary* dict =[yourArray objectAtIndex:j];
    for (NSString* key in [dict allKeys]) {
            [array addObject:key];
    }
}
NSLog(@"array===%@",array);
于 2013-09-20T11:19:52.267 回答
0
 NSMutableArray *arrayofKeys = [NSMutableArray new];

for (NSDictionary * dict in array){

   [arrayofKeys addObjectsFromArray:[dict allKeys]];
}

NSLog(@"The collection keys :: %@",arrayofKeys);
于 2013-09-20T11:37:07.130 回答