我想将一个整数值数组分配给对象数组的相应属性。
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
答案 0 :(得分:0)
我不确定效率。正如@Ryan所说,所有内置函数方法都只使用循环来处理数组。
话虽如此,你可以做这样的事......
let updatedObjectArray = zip(arrint, arrobj).map {
number, object -> MyClass in
object.propint = number
return object
}
但你必须小心。通过使用类(而不是结构),您将无意中编辑原始数组。
无论如何,这将压缩两个数组,迭代它们,然后将它们映射到具有更新对象的数组。
作为旁注:为变量选择更好的名称。即使在Stack Overflow问题中也是如此。使用arrint
或arrobj
或propint
等变量名只能做两件事。难以回复问题,因为自动更正想要更改所有问题。并且在阅读时难以理解。我知道它是一个属性和一个int(这就是代码所说的)。该名称应该告诉我为什么它是一个属性和一个int。