objectForKey和 和有什么不一样valueForKey?我在文档中查找了两者,它们对我来说似乎相同。
objectForKey
valueForKey
objectForKey:是一种NSDictionary方法。AnNSDictionary是一个类似于 an 的集合类NSArray,除了不使用索引,它使用键来区分项目。密钥是您提供的任意字符串。没有两个对象可以具有相同的键(就像一个对象中没有两个对象NSArray可以具有相同的索引)。
objectForKey:
NSDictionary
NSArray
valueForKey:是一种KVC方法。它适用于任何课程。valueForKey:允许您使用字符串作为其名称来访问属性。因此,例如,如果我有一个Account带有 property 的类accountNumber,我可以执行以下操作:
valueForKey:
Account
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 协议参考。
希望有帮助。