在此代码中.enumerated()和.map()的目的是什么?

问题描述 投票:-2回答:2

我正在研究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中最终弄清大多数事情,但是我在这里很困惑,解释性的文本也不清楚。我希望有人可以帮助我理解本教程的这一部分。谢谢!

swift dictionary enumerate
2个回答
0
投票

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
  })

0
投票
  1. 地图用于修改。此时,您基本上是通过给Result数组作为参数来初始化results的对象:
© www.soinside.com 2019 - 2024. All rights reserved.