Предположим, у меня есть некоторые объекты, совместимые с KVC, подобные следующим:
class Person : NSObject {
var office: Office
var firstName: String
var lastName: String
var reports: [Report]
init( office: Office,
firstName: String,
lastName: String,
reports: [Report] ) {
...
}
}
class Office : NSObject {
var building: String
var room: Int
init( building: String,
room: Int ) {
...
}
}
class Report : NSObject {
var title: String
var contents: String
init( title: String,
contents: String ) {
...
}
}
И я создаю экземпляр person
let person = Person(
office: Office(
building: "Main",
room: 2 ),
firstName: "Bob",
lastName: "Roberts",
reports: [
Report( title: "Today's weather", contents: "..." ),
Report( title: "Traffic", contents: "..." ),
Report( title: "Stocks", contents: "..." )
] )
Я могу использовать person.value (forKeyPath:) чтобы получить доступ к свойствам и вложенным свойствам человека следующим образом:
person.value(forKeyPath: "firstName") // "Bob"
person.value(forKeyPath: "office.room" ) // 2
Однако есть ли в KVC способ для заголовка из второго отчета?
Что-токак
person.value(forKeyPath: "reports[1].title" ) // "Traffic"