如何将一个int数组赋值给Swift中对象数组的相应属性?

时间:2016-11-21 21:38:37

标签: arrays swift

我想将一个整数值数组分配给对象数组的相应属性。

class MyClass {
    var propint: Int = 0
    var propdbl: Double = 0.0
    var propstr: String = ""
} // MyClass

var arrint: [Int]()
var arrobj: [MyClass]()

一种方法是循环遍历整数数组( arrint ),并将值赋给相应对象数组元素的属性 propint

我想知道是否有更高效,更优雅的解决方案,例如。比如 array.map ,如果是这样的话会是这样的。

- Sil68

1 个答案:

答案 0 :(得分:0)

我不确定效率。正如@Ryan所说,所有内置函数方法都只使用循环来处理数组。

话虽如此,你可以做这样的事......

let updatedObjectArray = zip(arrint, arrobj).map {
    number, object -> MyClass in

    object.propint = number
    return object
}

但你必须小心。通过使用类(而不是结构),您将无意中编辑原始数组。

无论如何,这将压缩两个数组,迭代它们,然后将它们映射到具有更新对象的数组。

作为旁注:为变量选择更好的名称。即使在Stack Overflow问题中也是如此。使用arrintarrobjpropint等变量名只能做两件事。难以回复问题,因为自动更正想要更改所有问题。并且在阅读时难以理解。我知道它是一个属性和一个int(这就是代码所说的)。该名称应该告诉我为什么它是一个属性和一个int。