2016-11-21 78 views
0

我想分配一个整数值数组到一个对象数组的对应属性。如何将int数组赋给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

+0

实际上'map','sort'和'filter'都是循环的。由于安全代码,他们可以使代码清洁,但大多数情况下性能更差。不确定是否有适合您的问题的好方法。 – Ryan

回答

0

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

说了这么多,你可以做这样的事情...

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

    object.propint = number 
    return object 
} 

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

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

作为一个方面说明:为您的变量选择更好的名称。即使在堆栈溢出问题。使用变量名称如arrintarrobjpropint只能做两件事。由于自动更正需要全部更改,因此难以回答问题。阅读时让阅读变得困难。我知道这是一个属性和一个int(这就是代码所说的)。这个名字应该告诉我为什么这是一个属性和int。

相关问题