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