@interface Phone : NSObject
@property (nonatomic) NSString *model;
@end
@implementation Phone
@end
@interface Employee : NSObject
@property (nonatomic) NSString *firstName;
@property (nonatomic) Phone *personalPhone;
@end
@implementation Employee
@end
Phone *iPhoneX = [Phone new];
iPhoneX.model = @"iPhone X";
Employee *petr = [Employee new];
petr.firstName = @"Petr";
petr.personalPhone = iPhoneX;
//KVC: the key path is data, not code
NSString *keyPath = @"personalPhone.model";
NSString *phoneModel =
[petr valueForKeyPath:keyPath];
//phoneModel is "iPhone X"
iPhoneX.model = @"iPhone X 256";
phoneModel = [petr valueForKeyPath:keyPath];
//phoneModel is "iPhone X 256"