【问题标题】:KeyPath to Nested Class嵌套类的 KeyPath
【发布时间】:2018-11-03 11:58:07
【问题描述】:

如何从嵌套类创建 KeyPath?我不知道如何使用反斜杠访问嵌套类。

示例代码:

class Config {
    var clients: Array<Client> = [Client()]

    // Nested Class
    class Client {
        public var name: String = "SomeName"
    }
}

var conf = Config()

func accessValue<T, U>(
    _ keyPath: ReferenceWritableKeyPath<Config, Array<T>>,
    valuePath: ReferenceWritableKeyPath<T ,U>) -> Any {

    let member: Array<T> = conf[keyPath: keyPath]
    let firstMember: T = member.first!

    let value = firstMember[keyPath: valuePath]

    return value
}

// How should I call this function?
print(accessValue(\Config.clients, valuePath: wanna_know))
// Should print "SomeName"

提前致谢!

【问题讨论】:

  • 键路径表达式用于在运行时访问属性

标签: swift4 keypaths


【解决方案1】:

使用标准点符号通过名称引用嵌套类,因此在您的情况下,嵌套类是 Config.Client

如您所知,键路径的格式为 \&lt;type name&gt;.&lt;path&gt;,因此您正在寻找的路径是 \Config.Client.name

HTH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多