Classes

@interface Phone : NSObject
@property (nonatomicNSString *model;
@end

@implementation Phone
@end

@interface Employee : NSObject
@property (nonatomicNSString *firstName;
@property (nonatomicPhone *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"