地图功能说明

时间:2018-01-25 12:07:28

标签: arrays dictionary swift3 map-function

有人可以向我解释这段代码,因为我无法理解。我找到了这段代码,我无法理解这一行:Room(dict:$ 0)

var rooms: [Room] = [] // The globale variable

func refresh() {
    let request = URLRequest(url: URL(string: "\(Config.serverUrl)/rooms")!)
    NSURLConnection.sendAsynchronousRequest(request, queue: OperationQueue.main, completionHandler: { resp, data, err in
        guard err == nil else {
            return
        }
        let rooms = try! JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions()) as! [[String: AnyObject]]
        self.rooms = rooms.map {
            Room(dict: $0) // I can't understand this line
        }
        self.tableView.reloadData()
    })
}

我的房间结构:

struct Room {

var key: String
var title: String
var cat: String!

init(dict: [String: AnyObject]) {
    title = dict["title"] as! String
    key = dict["key"] as! String
    cat = dict["cat"] as! String
}

init(key: String, title: String, cat: String) {
    self.key = key
    self.title = title
    self.cat = cat
}

func toDict() -> [String: AnyObject] {
    return [
        "title": title as AnyObject,
        "key": key as AnyObject,
        "cat": cat as AnyObject
    ]
}
}

如果有人可以帮我理解和解释,谢谢

1 个答案:

答案 0 :(得分:1)

map函数遍历集合中的每个项目,并将操作应用于集合中的每个元素。

这段代码

self.rooms = rooms.map {
    Room(dict: $0)
}

是此的简短形式。

// `dict` paramater is `$0` in shorter form
self.rooms = rooms.map { (dict : [String: AnyObject]) -> Room in
    return Room(dict: dict)
}