首先有一个基类叫做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:我可以找到哪一个是Array,但我不知道如何获得这种类型并继续调用它的analysetDictionaryToAttributes func。
答案 0 :(得分:0)
为什么期望在TestListItemModel
课程函数中获得BaseModel
。首先,我看不到任何具有TestListItemModel
的结构。因为我可以看到你只是传递json字典对象,它不知道你的类&#39; TestListItemModel&#39;在这一行
self.setDictionaryToAttributes(dictionary_is: dic)
那么为什么你希望父类知道它的子类是TestListItemModel
和TestListModel
。
所以在这个函数中
public func setDictionaryToAttributes(dictionary_is dictionary:Dictionary<String,Any>?)->Bool
您将始终将String of Dictionary作为键,Value作为Any类型。如果您期待String,那么您可以随时检查它
if value = value as String
{
print(value)
}