在Swift中从AnyObject创建数组

Asi*_*Das 1 arrays ios swift

我有一个AnyObject类型的数组,如下所示:[[String:AnyObject]]

animalList = [["name":ABC,"color":red],["name":DEF,"color":green],["name":GHI,"color":blue]]

模型类是这样的:

class ModelAnimal {

    var name: String
    var color: String

    init(name: String, color: String){
        self.name = name
        self.color = color 
    }
}
Run Code Online (Sandbox Code Playgroud)

如何将它们放在ModelAnimal类型的数组中:

var myList = Array<ModelAnimal>()

    for var i = 0; i < animalList.count; i++ {

     myList.

    }
Run Code Online (Sandbox Code Playgroud)

vac*_*ama 5

使用map创建类型的新数组[ModelAnimal]:

let animalList: [[String: AnyObject]] = [["name": "ABC", "color":"red"], ["name": "DEF", "color": "green"], ["name": "GHI", "color": "blue"]]

class ModelAnimal {

    var name: String
    var color: String

    init(name: String, color: String){
        self.name = name
        self.color = color
    }
}

let myList = animalList.map { ModelAnimal(name: $0["name"] as? String ?? "", color: $0["color"] as? String ?? "") }
Run Code Online (Sandbox Code Playgroud)

这也使用条件转换 as? Stringnil合并运算符 ??来安全地从字典数组中提取值并将它们传递给构造函数ModelAnimal.