我正在研究https://www.raywenderlich.com/921-cocoa-bindings-on-macos中的教程。我想知道.enumerated()和.map()函数在本节中要进行什么操作:
@@ IBAction func searchClicked(_发件人:任意){
guard let resultsNumber = Int(numberResultsComboBox.stringValue)
else {
return
}
iTunesRequestManager.getSearchResults(searchTextField.stringValue, results: resultsNumber, langString: "en_us") { (results, error) in
let itunesResults = results.map {
return Result(dictionary: $0)
}
.enumerated()
.map({ (index, element) -> Result in
element.rank = index + 1
return element
})
DispatchQueue.main.async {
self.searchResultsController.content = itunesResults
print(self.searchResultsController.content!)
}
}
}
我通常可以在Swift中最终弄清大多数事情,但是我在这里很困惑,解释性的文本也不清楚。我希望有人可以帮助我理解本教程的这一部分。谢谢!
1-您将通过字典itunesResults
的数组创建名为Result
的自定义模型的数组results
的部分>
let itunesResults = results.map { return Result(dictionary: $0) }
2-在这里使用
enumerated
,因此可以遍历数组的索引和元素
.enumerated()
3-在这里用
map
进行循环,该循环将rank
中每个对象的itunesResults
属性设置为=索引加1,意味着等级从1到results.count
.map({ (index, element) -> Result in
element.rank = index + 1
return element
})
Result
数组作为参数来初始化results
的对象: