我为什么不使用[NSDictionary objectForKey:]?

时间:2015-05-07 13:50:17

标签: objective-c nsdictionary

我最近开始使用Faux Pas(http://fauxpasapp.com/),对于我的项目,我多次收到以下警告:

旧的,详细的Objective-C语法

-[NSDictionary objectForKey:] is called. Consider using an Objective-C subscript expression instead.

我不确定下标表达是什么,而且我没有太多运气在其上找到任何东西。我很好奇这里是否有人可以提供帮助。

谢谢!

3 个答案:

答案 0 :(得分:4)

没有任何性能差异,只是文字语法更清晰,更简洁,并且已经有好几年了。

如果当前代码如下:

id var = [dictionary objectForKey:@"key"];

将其替换为:

id var = dictionary[@"key"];

答案 1 :(得分:4)

通常你会写这样的东西:

NSDictionary *dictionary = [NSDictionary dictionaryWithObject:[NSNumber numberWithInteger:42] forKey:@"foo"];
id value = [dictionary objectForKey:@"foo"];

现在你会写这样的东西:

NSDictionary *dictionary = @{@"foo": @42};
id value = dictionary[@"foo"];

其中,我认为你会同意的更简单,更好看。

有关Object Subscripting的一些很好的信息可以在NSHipster

找到

答案 2 :(得分:1)

您想了解Objective-C 2.0。最好的方法是直接找到来源:

http://clang.llvm.org/docs/ObjectiveCLiterals.html

正如您所看到的,引入了许多语言功能:NSNumber文字和“拳击”表达式,以及NSArray和NSDictionary(以及您喜欢的自己的类)的下标。这被认为是“现代”的方式。

Xcode会将您的代码重构为“现代Objective-C”(请参阅​​编辑>重构),这样您就可以在不做任何工作的情况下实现代码的现代化!