
我在文档中看了两个,他们似乎对我一样。解决方法 objectForKey:是一个NSDictionary方法。 NSDictionary是一个类似于NSArray的集合类,除了不使用索引,它使用键来区分项目。键是您提供的任意字符串。没有两个对象可以具有相同的键(就像NSArray中没有两个对象可以具有相同的索引一样)。
valueForKey:是一个KVC方法。它适用于任何类。 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,有很多教程,如果你谷歌特别是在Scott Stevenson’s blog.你也可以检查出NSKeyValueCoding Protocol Reference。
希望有帮助。
总结以上是内存溢出为你收集整理的objective-c – objectForKey和valueForKey之间的区别?全部内容,希望文章能够帮你解决objective-c – objectForKey和valueForKey之间的区别?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)