Avatar
KeyPath struct User { var name: String var age: Int } var user: User = .init(name: "Swift", age: 8) //print(user.age) //user.age = 9 let keyPath: WritableKeyPath<User, Int> = \.age let keyPath2 = \User.age print(user[keyPath: keyPath]) user[keyPath: keyPath] = 9 print(user[keyPath: keyPath]) print(user.age) var userGroups: [String: [User]] = ["id0": [user]] print(userGroups["id0"]?[0].age as Any) let keyPath3: KeyPath<[String: [User]], Int?> = \.["id0"]?[0].age print(userGroups[keyPath: keyPath3] as Any) // AnyKeyPath // PartialKeyPath<Root> // KeyPath<Root, Value> // WritableKeyPath<Root, Value> // ReferenceWritableKeyPath<Root, Value>