【发布时间】:2019-12-26 22:37:39
【问题描述】:
我正在编写来自https://www.raywenderlich.com/921-cocoa-bindings-on-macos 的教程。我想知道 .enumerated() 和 .map() 函数在本节中的作用是什么:
@IBAction func searchClicked(_ sender: Any) {
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 中弄清楚大多数事情,但我在这里被难住了,解释性文字对我来说也不清楚。我希望有人可以帮助我理解本教程的这一部分。谢谢!
【问题讨论】:
-
您是否查看过枚举器 aor map 的 API 文档?
-
是的,我有,但是在显示的文档示例中,正在操作的内容已明确定义(对我而言),例如: for (n, c) in "Swift".enumerated() { print ("(n): '(c)'") and: let cast = ["Vivien", "Marlon", "Kim", "Karl"] let lowercaseNames = cast.map { $0.lowercased() } }
-
cast只是一个Array<String>(又名[String])。但lowercaseNames也是如此(调用map的结果。通过文字(例如cast)生成的值与通过调用函数(例如lowercaseNames)生成的值之间没有区别
标签: swift dictionary enumerate