Objective-C自定义类添加中括号存取值支持

在OC中中括号取值常用的就是NSDictionary和NSArray了

类似NSDictionary的key-value读写

  • 效果
    Person *person = [[Person alloc] init];
    person[@"name"] = @"Mike";
    person[@"address"] = @"Wuhan";
    person[@"sex"] = @YES;
    person[@"age"] = @10;
    NSLog(@"%@ %@", person[@"name"], person[@"age"]);
  • 实现

实现只需要实现两个存取的方法即可

- (id)objectForKeyedSubscript:(id)key;
- (void)setObject:(id)obj forKeyedSubscript:(NSString *)key;

类似NSArray下标读写

  • 效果
    MyArray *myarr = [[MyArray alloc] initWithStrings:@"Hello", @"How", @"are", @"you", nil];
    NSLog(@"%@", myarr);
    
    myarr[0] = @"Hi!";
    myarr[1] = @"World";
    NSLog(@"%@ %@", myarr[0], myarr[1]);
  • 实现

实现只需要实现两个存取的方法即可

- (id)objectAtIndexedSubscript:(NSUInteger)idx;
- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx;
  • 补充

其中的init方法,原型是这样的

- (instancetype)initWithStrings:(NSString *)string, ... NS_REQUIRES_NIL_TERMINATION;

是一个动态参数方法,类似与NSArray的的 initWithObjects 方法,动态参数可以看这里

NS_REQUIRES_NIL_TERMINATION宏可以检查最后一个参数是不是nil

查看原文

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容