KeyPath для вложенного класса - PullRequest
0 голосов
/ 03 ноября 2018

как я могу создать 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"

Заранее спасибо!

1 Ответ

0 голосов
/ 05 ноября 2018

Вложенный класс называется по имени с использованием стандартной точечной нотации, поэтому в вашем случае вложенный класс - Config.Client.

Как вы знаете, ключевой путь имеет форму \<type name>.<path>, поэтому путь, который вы ищете, \Config.Client.name.

НТН

...