类 / 下标(索引器方法)

@interface Country : NSObject
- (instancetype)initWithInfo:
    (NSDictionary<NSString *, id> *)info;
- (id)objectForKeyedSubscript:
    (NSString *)key;
@end

@implementation Country {
    NSDictionary<NSString *, id> *_info;
}

- (instancetype)initWithInfo:
    (NSDictionary<NSString *, id> *)info {
    self = [super init];
    if (self) {
        _info = info;
    }
    return self;
}

//id returns a value of any type
- (id)objectForKeyedSubscript:
    (NSString *)key {
    return _info[key];
}
@end

Country *france = [[Country alloc]
    initWithInfo:@{
        @"Name"@"France",
        @"Population": @66991000}];

NSString *name = france[@"Name"];
//name is "France"

NSNumber *population = france[@"Population"];
//population is 66991000