KeyPath
Last updated
Last updated
class School {
var name: String
**var affiliate: SmallSchool**
init(name: String, affiliate: SmallSchool) {
self.name = name
self.affiliate = affiliate
}
}
class SmallSchool {
**var classMember: Person**
init(classMember: Person) {
self.classMember = classMember
}
}
class Person {
**var name: String**
init(name: String) {
self.name = name
}
}
// ์ง์ ์ ๊ทผ
let person1 = Person(name: "ํ๊ธธ๋")
let smallSchool1 = SmallSchool(classMember: person1)
let school1 = School(name: "์ํผ๊ณ ", affiliate: smallSchool1)
let gildong = school1.affilate.classMember.name
// Swift5์์์ ๊ฐ์ ์ ๊ทผ
let namePath = \School.affiliate.classMember.name // keyPath ๊ฒฝ๋ก ์ง์
school1[keyPath: namePath] // ๋์
๋๋ฆฌ ๋ฐฉ์(์๋ธ์คํฌ๋ฆฝํธ)๋ก ์ ๊ทผ ๊ฐ๋ฅlet namePath = \School.affiliate.classMember // ๋ฏธ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์ง์ (**keyPath**)
let newNamePath = namePath.appending(path: \.name)
school1[keyPath: newNamePath] // appending ๋ฉ์๋๋ก ๊ฒฝ๋ก๋ฅผ ์ถ๊ฐํ ์ ์๋ค.