【问题标题】:Make new array partially from another array部分从另一个数组制作新数组
【发布时间】:2020-12-21 23:34:10
【问题描述】:

我对 Swift 很陌生,如果这是一个愚蠢的问题,请原谅。

我有一个 JSON X 对象数组,我将其加载到我的应用程序中并传递视图(我有一个已定义的结构)。现在在另一个视图中,我有一个新结构,如下所示:

struct Pin: Identifiable {
    var name: String
    let id = UUID()
}

然后像这样创建一个数组:

@State private var pins: [Pin] = []

如何使这个数组包含Pin 对象,但由我现有的X 数组组成。我的意思是 pins 数组中的每个新 Pin 都将具有 Pin(name: X.name[0] 的值,以此类推对于我的 X 数组中的每个元素。

所以我的最终pins 数组应该类似于:

[Pin(name: x.name[0]...), Pin(name: x.name[1]...), Pin(name: x.name[2]...)...]

【问题讨论】:

  • X 数组到底是什么?那么新数组中的image 呢?
  • @pawello2222 X 数组是一个对象数组,每个对象都有一个 namedescription 和几个我在这个特定视图中不需要的其他字段。您可以忽略该图像,我本来想要它但最终决定不这样做,将从代码示例中删除它:)

标签: arrays swift swiftui


【解决方案1】:

您可以使用map 将一个数组转换为另一个数组:

pins = x.map { Pin(name: $0.name) }

或者,速度较慢,但​​显示了另一种使用map的方式:

pins = x.map(\.name).map(Pin.init)

【讨论】:

  • 太棒了,这正是我需要它做的!我是一名 JavaScript 开发人员,每天都在使用地图,但由于某种原因,我没有想到它们也可以在 Swift 中使用……无论如何,非常感谢!
猜你喜欢
  • 2017-02-12
  • 2017-04-03
  • 2015-06-17
  • 1970-01-01
  • 2020-04-20
  • 2012-12-16
  • 1970-01-01
  • 1970-01-01
  • 2016-10-16
相关资源
最近更新 更多