如何在Swift中获取数组的元素类型



首先有一个基类称为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)

那么,为什么您希望父母课程会知道其子类是TestListItemModelTestListModel

所以在此功能中

public func setDictionaryToAttributes(dictionary_is dictionary:Dictionary<String,Any>?)->Bool

您将始终将字符串字典作为键和值作为任何类型。而且,如果您期望字符串,则可以随时以这种方式检查

if value = value as String
{
   print(value)
}

相关内容

  • 没有找到相关文章

最新更新