次のモデルを例として使用すると、JSONModel内でポリモーフィズムを処理するベスト プラクティスは何ですか?
@interface GameModel : JSONModel
@property (nonatomic, assign) long id;
@property (nonatomic, assign) NSArray<GameEventModel> *events;
/*
...
*/
@end
@interface GameEventModel : JSONModel
@property (nonatomic, assign) long long timestamp;
/*
...
*/
@end
@interface GameTouchEventModel : GameEventModel
@property (nonatomic, assign) CGPoint point;
/*
...
*/
@end
GameModel が次の JSON 文字列で開始された場合{id:1, events:[{point:{x:1, y:1}, timestamp:...}]}
JSONModel は を使用し、プロパティGameEventModel
を無視しpoint
ます。
次のようなプロパティとプロパティGameEventModel
を含むジェネリックを使用する方がよいでしょうか...type
info
@interface GameTouchEventModel : GameEventModel
@property (nonatomic, strong) NSString *type;
@property (nonatomic, strong) NSDictionary *info;
@end
したがって、モデルは JSON を次のように受け入れることができます。{id:1, events:[{ type:"GameTouchEventModel", info:{ point:{x:1, y:1}, timestamp:... } }]}
このアプローチの問題点は、コードが読みにくく、特にコンパイラの警告/エラーが発生しないことです。
JSONModel でポリモーフィック モデルを使用する方法はありませんか?