将NSMutableArray转换为NSDictionary以使用objectForKey?

dav*_*vis 3 iphone cocoa-touch objective-c nsdictionary nsarray

我有一个看起来像这样的NSMutableArray

 {
    "@active" = false;
    "@name" = NAME1;
 },
 {
    "@active" = false;
    "@name" = NAME2;
 }
Run Code Online (Sandbox Code Playgroud)

有没有办法将其转换为NSDictionary,然后使用objectForKey来获取名称对象的数组?我怎么能得到这些物品?

Vik*_*ica 7

休伯特提出了一个更短的形式

NSArray *allNames = [array valueForKey:@"name"];
Run Code Online (Sandbox Code Playgroud)

valueForKey:在NSArray上通过发送valueForKey:givenKey到所有元素返回一个新数组.

来自文档:

valueForKey:
返回一个数组,其中包含对每个数组对象调用valueForKey:using 的结果 key.

- (id)valueForKey:(NSString *)key

参数
key要检索的键.

返回值
检索到的键的值.

讨论
返回的数组包含NSNull返回的每个对象的元素nil.

例:

NSArray *array = @[@{ @"active": @NO,@"name": @"Alice"},
                   @{ @"active": @NO,@"name": @"Bob"}];

NSLog(@"%@\n%@", array, [array valueForKey:@"name"]);
Run Code Online (Sandbox Code Playgroud)

结果:

(
        {
        active = 0;
        name = Alice;
    },
        {
        active = 0;
        name = Bob;
    }
)
(
    Alice,
    Bob
)
Run Code Online (Sandbox Code Playgroud)