PFObject 如何允许像 NSMutableDictionary 这样的下标?
How does PFObject allow subscripting like NSMutableDictionary?
我正在阅读 Parse 的 iOS 开发人员指南。
我在显示 PFObject
使用下标语法分配给键的地方感到困惑。
PFObject *gameScore = [PFObject objectWithClassName:@"GameScore"];
gameScore[@"score"] = @1337;
gameScore[@"playerName"] = @"Sean Plott";
gameScore[@"cheatMode"] = @NO;
PFObject *gameScore = [PFObject objectWithClassName:@"GameScore"];
gameScore[@"score"] = @1337;
首先我认为 PFObject
必须扩展 NSMutableDictionary
,但 PFObject
仅扩展 NSObject
。它如何表现得像 NSMutableDictionary
?
我如何为我自己的 class 执行此操作?
NSHipster 有答案:
Similarly, custom-keyed subscripting can be added to your class by declaring and implementing these methods:
- (id)objectForKeyedSubscript:(*KeyType*)key;
- (void)setObject:(id)obj forKeyedSubscript:(*KeyType*)key;
设置键值的语法被编译器翻译成对方法 setObject:forKeyedSubscript
的调用,并将与任何提供这种方法的 class 一起工作,而不仅仅是 NSMutableDictionary
.
有关完整详细信息,请阅读 Clang 编译器文档 Objective-C Literals 部分中的 "Object Indexing"。
HTH
我正在阅读 Parse 的 iOS 开发人员指南。
我在显示 PFObject
使用下标语法分配给键的地方感到困惑。
PFObject *gameScore = [PFObject objectWithClassName:@"GameScore"];
gameScore[@"score"] = @1337;
gameScore[@"playerName"] = @"Sean Plott";
gameScore[@"cheatMode"] = @NO;
PFObject *gameScore = [PFObject objectWithClassName:@"GameScore"];
gameScore[@"score"] = @1337;
首先我认为 PFObject
必须扩展 NSMutableDictionary
,但 PFObject
仅扩展 NSObject
。它如何表现得像 NSMutableDictionary
?
我如何为我自己的 class 执行此操作?
NSHipster 有答案:
Similarly, custom-keyed subscripting can be added to your class by declaring and implementing these methods:
- (id)objectForKeyedSubscript:(*KeyType*)key;
- (void)setObject:(id)obj forKeyedSubscript:(*KeyType*)key;
设置键值的语法被编译器翻译成对方法 setObject:forKeyedSubscript
的调用,并将与任何提供这种方法的 class 一起工作,而不仅仅是 NSMutableDictionary
.
有关完整详细信息,请阅读 Clang 编译器文档 Objective-C Literals 部分中的 "Object Indexing"。
HTH