使用KVC获取对象列表'性能

时间:2013-11-16 02:58:12

标签: objective-c kvc

在此SO post中,所选答案使用以下语法以这种方式从乘客列表中获取频繁的常规号码列表。

  

NSArray * frequentFlyerNumbers =   someFlight.passengers.frequentFlyerNumbers;

如果乘客是一个数组并且编译器无法推断出进入数组的类型,那怎么可能呢?

实施乘客时出现以下错误。

  

在类型对象上找不到属性'frequentFlyerNumbers'   'NSMutableArray *'

1 个答案:

答案 0 :(得分:2)

你引用的答案很难写。这里提供的代码不起作用。

简单代码中的点语法只是访问者的简写:someFlight.passengers表示[someFlight passengers],它从上下文中看起来返回一个NSMutableArray。 NSMutableArray当然没有frequencyFlyerNumbers属性。

要获得您想要的效果,请执行以下操作:

NSArray *frequentFlyerNumbers = [someFlight valueForKeyPath:@"passengers.frequentFlyerNumbers"];

这将起作用,并返回一个频繁的FredNumber数组。当沿着键路径存在数组或集合时,它会“投射”该数组或集合的所有成员的后续路径,从而生成一个数组或一组结果。