我刚刚开始swift,我正在尝试复制我用过obj-c的功能。基本上它是对象模型映射的json。我正在使用的代码看起来应该可以工作,但我在标题中收到错误,我不知道为什么或如何修复它。
以下是一些示例代码:
struct foo {
let modelMap = ["DataModelBase" : DataModelBase.self,
"ManifestDataModel" : ManifestDataModel.self]
func createModel(classString: String, json: Dictionary<String, AnyObject>) -> AnyObject {
if let modelClass: DataModelBase = modelMap[classString] {
let model = modelClass.initWithDictionary(json)
return model
}
return json
}
该行正在触发错误: 如果让modelClass:DataModelBase = modelMap [classString]
DataModelBase是一个基类,ManifestDataModel是子类DataModelBase
有人可以解释为什么会出现错误消息以及我如何解决它?
答案 0 :(得分:0)
您在if let
语句中想要的内容可能是
if let modelClass: DataModelBase = modelMap[classString] as? DataModelBase {
仅当modelMap[classString]
为DataModelBase
编辑:
class DataModelBase {
required init(json: [String:AnyObject]) {
}
}
class ManifestDataModel: DataModelBase {
required init(json: [String:AnyObject]) {
super.init(json: json)
}
}
struct foo {
let modelMap = ["DataModelBase" : DataModelBase.self,
"ManifestDataModel" : ManifestDataModel.self]
func createModel(classString: String, json: [String: AnyObject]) -> AnyObject {
if modelMap[classString] != nil {
if let modelType = modelMap[classString] {
let model = modelType.init(json: json)
return model
}
}
return json
}
}