Objective c 为什么我不应该使用[NSDictionary objectForKey:]?

Objective c 为什么我不应该使用[NSDictionary objectForKey:]?,objective-c,nsdictionary,Objective C,Nsdictionary,我最近开始使用失礼行为,对于我的项目,我多次收到以下警告: 陈旧、冗长的Objective-C语法 我不确定下标表达式是什么,也不太可能在上面找到任何东西。我很好奇这里是否有人能帮忙 谢谢 没有性能上的差异,只是文字语法更清晰,不太冗长,并且已经使用了好几年了 如果当前代码类似于: id var = [dictionary objectForKey:@"key"]; 替换为: id var = dictionary[@"key"]; 没有性能上的差异,只是文字语法更清晰,不太冗长,并且已经提

我最近开始使用失礼行为,对于我的项目,我多次收到以下警告:

陈旧、冗长的Objective-C语法

我不确定下标表达式是什么,也不太可能在上面找到任何东西。我很好奇这里是否有人能帮忙


谢谢

没有性能上的差异,只是文字语法更清晰,不太冗长,并且已经使用了好几年了

如果当前代码类似于:

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

id var = dictionary[@"key"];

没有性能上的差异,只是文字语法更清晰,不太冗长,并且已经提供了好几年了

如果当前代码类似于:

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

id var = dictionary[@"key"];

您想了解Objective-C2.0。最好的方法是直接找到源头:

如您所见,引入了许多语言功能:NSNumber文本和装箱表达式,以及NSArray和NSDictionary的订阅和您自己的类(如果您愿意)。这被认为是现代的方式


Xcode将把您的代码重构为现代Objective-C,您可以在编辑>重构下看到,这样您就可以在不做任何工作的情况下实现代码的现代化

您想了解Objective-C2.0。最好的方法是直接找到源头:

如您所见,引入了许多语言功能:NSNumber文本和装箱表达式,以及NSArray和NSDictionary的订阅和您自己的类(如果您愿意)。这被认为是现代的方式


Xcode将把您的代码重构为现代Objective-C,您可以在编辑>重构下看到,这样您就可以在不做任何工作的情况下实现代码的现代化

通常你会写这样的东西:

NSDictionary *dictionary = [NSDictionary dictionaryWithObject:[NSNumber numberWithInteger:42] forKey:@"foo"];
id value = [dictionary objectForKey:@"foo"];
NSDictionary *dictionary = @{@"foo": @42};
id value = dictionary[@"foo"];
现在你可以这样写:

NSDictionary *dictionary = [NSDictionary dictionaryWithObject:[NSNumber numberWithInteger:42] forKey:@"foo"];
id value = [dictionary objectForKey:@"foo"];
NSDictionary *dictionary = @{@"foo": @42};
id value = dictionary[@"foo"];
我想你会同意,这是一个更简单,更好看


有关对象订阅的一些好信息可以在NSHipster上找到,通常您会这样写:

NSDictionary *dictionary = [NSDictionary dictionaryWithObject:[NSNumber numberWithInteger:42] forKey:@"foo"];
id value = [dictionary objectForKey:@"foo"];
NSDictionary *dictionary = @{@"foo": @42};
id value = dictionary[@"foo"];
现在你可以这样写:

NSDictionary *dictionary = [NSDictionary dictionaryWithObject:[NSNumber numberWithInteger:42] forKey:@"foo"];
id value = [dictionary objectForKey:@"foo"];
NSDictionary *dictionary = @{@"foo": @42};
id value = dictionary[@"foo"];
我想你会同意,这是一个更简单,更好看


在NSHipster上可以找到一些关于对象订阅的好信息,比如:myDictionary[@myKey]它可能是指使用文字吗?相反,您只需在下标中输入key,比如dict[key]。这就是下标表达式。旧语法实际上没有什么问题。重要的是要坚持其中一种格式。符号越短与可读性越好无关。比如:myDictionary[@myKey]它可能是指使用文字吗?相反,您只需在下标中输入key,比如dict[key]。这就是下标表达式。旧语法实际上没有什么问题。重要的是要坚持其中一种格式。符号越短与可读性越好无关。