我刚刚意识到,我可以访问NSDictionary
同时使用objectForKey:
和字典[关键]?
NSDictionary *coordsDict = @{@"xpos": @5.0, @"ypos": @7.2, @"zpos": @15.7};
NSLog(@"XPOS: %@", coordsDict[@"xpos"]);
NSLog(@"XPOS: %@", [coordsDict objectForKey:@"xpos"]);
谁能告诉我,如果这是从我很好,或者它的一些相当最近更改语言隐瞒什么?
编辑:问题不一般指新的字符串文字,更明确地与一个你想用的NSArray相同的字符串文本语法访问NSDictionary的。 我显然忽略了这一点,只是想检查加入这个特殊的语法时。
这是一个新的除了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呢!
参见 “现代的Objective-C”,在iOS 6中推出。
见WWDC 2012视频: 迁移到现代的Objective-C 。
所以,不,该功能是不是真的新,你忽略了它... ;-)