2016-11-21 52 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。

相關問題