首先有一个基类称为basemodel,以下是代码:
class BaseModel : NSObject
{
var code:Int?
var message:Any?
public func setDictionaryToAttributes(dictionary_is dictionary:Dictionary<String,Any>?)->Bool
{
guard let dic:Dictionary<String,Any> = dictionary else {return false}
for (key,value) in dic {
let someType = type(of: value)
debugPrint("(String(describing: someType.self))")
debugPrint("(String(describing: someType))")
if someType is Array<Any>.Type { //i can't get TestListItemModel string
debugPrint("(String(describing: someType))")
}
}
self.setValuesForKeys(dic)
return true;
}
}//class BaseModel end
,还有另一个从basemodel
继承的类class TestListModel: BaseModel {
var tatalink:Any?
var items:Array<TestListItemModel>?
func setValuesFrom(jsonData j:JSON) { //j is a swifyJson object
guard var dic = j.dictionaryObject else {return}
if self.setDictionaryToAttributes(dictionary_is: dic)==false {
return
}
}
}
testListModel中的子模型有一个类TestListItemModel
class TestListItemModel:BaseModel {
var imgurl: Any?
var title: Any?
}
问题是:我想从JSON数据中自动解析BaseModel类中的所有属性值。在func AnalySetDictionaryToAttributes中:我可以找到哪个是数组,但我不知道该如何获得这种类型并继续称其为AnalySeTdictionAryToAttributes func。
为什么您希望在BaseModel
类功能中获得TestListItemModel
。首先,我看不到任何具有TestListItemModel
的结构。因为我可以看到您只是传递JSON字典对象,该对象在此行中不知道您的类" testListItemModel"
self.setDictionaryToAttributes(dictionary_is: dic)
那么,为什么您希望父母课程会知道其子类是TestListItemModel
和TestListModel
。
所以在此功能中
public func setDictionaryToAttributes(dictionary_is dictionary:Dictionary<String,Any>?)->Bool
您将始终将字符串字典作为键和值作为任何类型。而且,如果您期望字符串,则可以随时以这种方式检查
if value = value as String
{
print(value)
}