使用以下模型作为示例,在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 中使用多态模型?