来自NSArray的NSDictionary使用KVC

时间:2013-08-14 19:15:29

标签: ios cocoa

是否可以根据关键属性名从CALayer的NSArray使用KVC获取NSDictionary?我尝试使用-dictionaryWithValuesForKeys:,但它返回一个NSArray。 有什么想法吗?

   NSArray *tempArray = [self.layer.sublayers copy];
   NSArray *ListName = [self.layer.sublayers valueForKey:@"name"];

   NSDictionary *tmpD= [tempArray dictionaryWithValuesForKeys:ListName];

由于

2 个答案:

答案 0 :(得分:5)

这就是你要问的问题吗?

NSDictionary * layersByName = [NSDictionary dictionaryWithObjects:[self.layer.sublayers copy]
                                                          forKeys:[self.layer.sublayers valueForKey:@"name"]];

-[NSArray valueForKey:]返回一个数组,该数组是通过使用相同的参数向接收者询问其自己的valueForKey:中的每个对象而形成的。

答案 1 :(得分:0)

我不知道如何直接与KVC一起做这件事。不过,通过迭代数组来做起来非常简单:

NSMutableDictionary *layersByName = [NSMutableDictionary dictionary];
for (CALayer *layer in self.layer.sublayers)
{
    [layersByName setObject:layer forKey:layer.name];
}