【问题标题】:Using KVC to get a list of objects' properties使用 KVC 获取对象的属性列表
【发布时间】:2013-11-16 02:58:12
【问题描述】:

在此SO post 中,选择的答案使用以下语法从乘客列表中以这种方式获取frequentFlyerNumbers 列表。

NSArray *frequentFlyerNumbers = someFlight.passengers.frequentFlyerNumbers;

考虑到乘客是一个数组并且编译器无法推断进入数组的类型,这怎么可能?

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

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

【问题讨论】:

  • 它可以向 valueForKey: 发送消息给任何对象,由对象正确响应。

标签: objective-c kvc


【解决方案1】:

您引用的答案写得不好。那里提供的代码不起作用。

点语法,在纯代码中,只是访问器的简写:someFlight.passengers 表示 [someFlight passengers],从上下文来看,它似乎返回一个 NSMutableArray。 NSMutableArray 本身当然没有frequentFlyerNumbers 属性。

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

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

这将起作用,并返回一个frequentFlyerNumbers 数组。当键路径上有一个数组或集合时,它会将后续路径“投影”到该数组或集合的所有成员中,从而生成一个数组或一组结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 2014-02-04
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多