小编典典

objectForKey 和 valueForKey 的区别?

all

objectForKey和 和有什么不一样valueForKey?我在文档中查找了两者,它们对我来说似乎相同。


阅读 83

收藏
2022-04-01

共1个答案

小编典典

objectForKey:是一种NSDictionary方法。AnNSDictionary是一个类似于 an
的集合类NSArray,除了不使用索引,它使用键来区分项目。密钥是您提供的任意字符串。没有两个对象可以具有相同的键(就像一个对象中没有两个对象NSArray可以具有相同的索引)。

valueForKey:是一种KVC方法。它适用于任何课程。valueForKey:允许您使用字符串作为其名称来访问属性。因此,例如,如果我有一个Account带有
property 的类accountNumber,我可以执行以下操作:

NSNumber *anAccountNumber = [NSNumber numberWithInt:12345];
Account *newAccount = [[Account alloc] init];

[newAccount setAccountNumber:anAccountNUmber];

NSNumber *anotherAccountNumber = [newAccount accountNumber];

使用 KVC,我可以动态访问该属性:

NSNumber *anAccountNumber = [NSNumber numberWithInt:12345];
Account *newAccount = [[Account alloc] init];

[newAccount setValue:anAccountNumber forKey:@"accountNumber"];

NSNumber *anotherAccountNumber = [newAccount valueForKey:@"accountNumber"];

这些是等效的语句集。

我知道你在想:哇,但很讽刺。KVC
看起来并不是那么有用。事实上,它看起来“罗嗦”。但是当你想在运行时改变一些东西时,你可以做很多很酷的事情,这些事情在其他语言中要困难得多(但这超出了你的问题范围)。

如果您想了解更多关于 KVC 的信息,如果您使用 Google 搜索,尤其是在Scott Stevenson
的博客
中,有很多教程。您还可以查看NSKeyValueCoding
协议参考

希望有帮助。

2022-04-01