2016-11-21 4 views
0

Ich möchte ein Array von Integer-Werten einer entsprechenden Eigenschaft eines Array von Objekten zuweisen.Wie wird ein Array von int einer entsprechenden Eigenschaft eines Arrays von Objekten in Swift zugewiesen?

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

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

Ein Ansatz würde durch die Anordnung von ganzen Zahlen Looping (arrint) und weisen den Wert der Eigenschaft propint des entsprechenden Objekts Arrayelement.

Ich frage mich, ob es eine effizientere, elegante Lösung für dieses Unternehmen, z. wie array.map, und wenn ja, wie das aussehen würde.

--Sil68

+0

Eigentlich sind 'map',' sort' und 'filter' alle loop. Und sie können Code sauber machen, aber meistens schlechtere Leistung wegen des Sicherheitscodes. Nicht sicher, es gibt einen guten Weg, um Ihre Frage zu passen. – Ryan

Antwort

0

Ich bin nicht sicher über effizient. Wie @Ryan sagte, verwenden alle eingebauten funktionalen Methoden nur eine Schleife, um das Array zu verarbeiten.

auch sagen, dass Sie etwas tun könnte ...

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

    object.propint = number 
    return object 
} 

Sie müssen hier allerdings vorsichtig sein. Durch die Verwendung einer Klasse (und nicht einer Struktur) werden Sie versehentlich das ursprüngliche Array bearbeiten.

Wie auch immer, das wird beide Arrays zusammenführen, iterieren und dann auf ein Array mit den aktualisierten Objekten abbilden.

Als eine Randnotiz: Wählen Sie bessere Namen für Ihre Variablen. Auch in Stack Overflow Fragen. Verwenden Sie Variablennamen wie arrint oder arrobj oder propint nur zwei Dinge tun. Machen Sie es schwierig, auf Fragen zu antworten, da die automatische Korrektur sie alle ändern möchte. Und es beim Lesen schwer verständlich machen. Ich weiß, es ist eine Eigenschaft und ein int (das ist, was der Code sagt). Der Name sollte mir sagen WARUM es ist eine Eigenschaft und ein Int.

Verwandte Themen