Key paths (\Type.property) представляют ссылку на свойство, а не его фактическое значение. Они позволяют тебе сохранять, передавать и использовать доступ к свойствам динамически — без их немедленного вычисления.
KeyPath<Root, Value> — только для чтения доступ к свойству value или reference typeWritableKeyPath<Root, Value> — чтение и запись для value types (structs)ReferenceWritableKeyPath<Root, Value> — чтение и запись для reference types (classes)Сортировка коллекции по свойству динамически:
let names = ["Charlie", "Alice", "Bob"]
let sorted = names.sorted(by: \.self) // ["Alice", "Bob", "Charlie"]
Фильтрация с помощью key path:
let users = [User(isActive: true), User(isActive: false)]
let activeUsers = users.filter(\.isActive)
Запись значения с использованием writable key path:
var user = User(name: "Alice")
let keyPath: WritableKeyPath<User, String> = \.name
user[keyPath: keyPath] = "Bob"
Data binding в SwiftUI активно использует key paths для связи UI со свойствами модели:
TextField("Name", text: $user.name)
Key paths обеспечивают type-safe способ ссылаться на свойства без жёстко прописанной логики доступа. Это особенно ценно для:
KeyPath<Root, Value> позволяет как читать, так и писать в свойства типов-значений, таких как структуры.
Новый — ещё не проверен сообществом
Вы