UI027: KVC补充

KVC: Key Value Coding

KVC 常用方法:

kvc的方式,给对象的方法赋值。灵活。

[p1 setValue:@"李四" forKeyPath:@"name"];
[p1 setValue:@10, forKeyPath:@"age"];
[p1 setValue:hashiqi forKeyPath:@"dog"];

NSString *value = @"tom@qq.com"; 
NSString *property = @"email"; 
[p1 setValue:value forKeyPath:property];

通过字典直接给对象赋值

字典NSDictionary中的字段,与对象的属性字段一致。

NSDictionary *bz = @{@"name":@“张三”,
                    @"age":@28,
                    @"email":@"tom@163.com",
                    @"dog":@{@"name": @"猫咪"}
};
[p1 setValuesForKeysWithDictionary:bz];
NSDictionary *dogDict = (NSDictionary *)p1.dog;
NSLog(@"dog --%@", dogDict[@"name"]);

通过keyPath复制。

Person *p1 = [[Person alloc] init];
Dog *dog = [[Dog alloc] init];
[p1 setValue:dog  forKeyPath:@"dog"]; // 确保dog属性不为空

[p1 setValue:@18 forKeyPath:@"age"];
[p1 setValue:@"哈士奇", forKeyPath:@"dog.name"]; // @“dog.name”就是KeyPath

valueForKeyPath 获取某个属性的值。

setValueForKeyPath 设置某个属性的值。

Person *p1 = [[Person alloc] init];
p1.name = @"蓝澜";
Dog *dog1 = [[Dog alloc] init];
dog1.name = @"吉娃娃";
p1.dog = dog1;

NSString *name = [p1 valueForKeyPath:@"name"];
NSString *dogName = [p1 valueForKeyPath:@"dog.name"]; // 拿到dog的name属性。

把对象转字典。dictionaryWithValuesForKeys

Person *p1 = [[Person alloc] init];
p1.name = @"蓝澜";
Dog *chh = [[Dog alloc] init];
chh.name = @"jww";
p1.dog = chh;

// 传递属性的数组。
NSDictionary *dict = [p1 dictionaryWithValuesForKeys:@[@"name", @"age", @"email", @"dog"]];
NSLog(@"%@", dict);
NSLog(@"%@", [dict[@"dog" class]);
NSLog(@"%@", [dict[@"dog" name]); // dog是个对象


2023/06/04 周日

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1:今日事件和互动情况:——女儿昨天一天没有吃饭,我看病回去以后已经晚上了,我把中午打包的菜打开,让他吃点饭,他说...
    竹子70阅读 631评论 0 0
  • 一、研究的主要管理过程和活动: 教育公平、教育均衡事关国计民生,随着“双减”政策的推行,课后托管已经成为普遍性现象...
    蒋铭国江西乐平阅读 793评论 0 0
  • 帕金森病是一种慢性进行性神经系统疾病,以肌肉僵硬、震颤和运动不协调等症状为主要表现。帕金森病一般出现在晚年,常常由...
    耳鸣耳聋好了阅读 514评论 0 0
  • “写作是最不能骗人的,因为他就是日复一日的思考,你的思考是深是浅,是全面还是片面,是丰富还是干瘪,都体现在你的文字...
    雪寒君阅读 1,228评论 0 4
  • 对自己精准的判断,是一门“技术活”。 有的人过于自信,或者说盲目自信,直接导致眼高于顶,大事做不来,小事不愿意做,...
    爱码字的丑丑阅读 942评论 0 0