使用[关键]符号访问NSDictionary的中键?(Accessing keys in NSDic

2019-08-16 22:57发布

我刚刚意识到,我可以访问NSDictionary同时使用objectForKey:和字典[关键]?

NSDictionary *coordsDict = @{@"xpos": @5.0, @"ypos": @7.2, @"zpos": @15.7};
NSLog(@"XPOS: %@", coordsDict[@"xpos"]);
NSLog(@"XPOS: %@", [coordsDict objectForKey:@"xpos"]);

谁能告诉我,如果这是从我很好,或者它的一些相当最近更改语言隐瞒什么?

编辑:问题不一般指新的字符串文字,更明确地与一个你想用的NSArray相同的字符串文本语法访问NSDictionary的。 我显然忽略了这一点,只是想检查加入这个特殊的语法时。

Answer 1:

这是一个新的除了4.4以上版本的Xcode和依赖于苹果的LLVM +锵编译器。 这是一个新的功能:)阵列也可以用相同的符号访问: myObjectArray[4]

如果您有兴趣加入这个新功能将自己的类(称为下标),还有可以实现的几种方法:

@interface NSArray(Subscripting)
- (id)objectAtIndexedSubscript:(NSUInteger)index;
@end

@interface NSMutableArray(Subscripting)
- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)index;
@end

@interface NSDictionary(Subscripting)
- (id)objectForKeyedSubscript:(id)key;
@end

@interface NSMutableDictionary(Subscripting)
- (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying>)key;
@end

如果您实现任何关于你自己的类这些方法,你可以通过下标上他们。 这也是如何将这些功能添加到OS X 10.7呢!



Answer 2:

参见 “现代的Objective-C”,在iOS 6中推出。

见WWDC 2012视频: 迁移到现代的Objective-C 。

所以,不,该功能是不是真的新,你忽略了它... ;-)



文章来源: Accessing keys in NSDictionary using [key] notation?