Ich möchte das erste Element in einem bestimmten Array von benutzerdefinierten Objekten zurückgeben und ein Array von Indizes und das erste benutzerdefinierte Objektelement zurückgeben, damit ich eine Guard-Anweisung umschlingen kann es.Swift - Holen Sie sich das erste Element im Array, und geben Element und Indizes zurück
dh:
let firstOrder = existingOrders.enumerated().flatMap{$0,$1}.first
oder der Versuch # 1
let array = existingOrders.enumerated().map { (a, b) in return [$0.index : $1.element] }.first
oder der Versuch # 2
let array = existingOrders.enumerated().map { ($0.offset, $0.element) }.first
print (array)
Diese nicht das eigentliche Objekt zurückkehrt; und es scheint ein Tupel zurückzugeben.
wo
existingOrders = [ExistingOrder, EngineYard.ExistingOrder, EngineYard.ExistingOrder]
es die folgende Erträge;
[(0, EngineYard.ExistingOrder), (1, EngineYard.ExistingOrder), (2, EngineYard.ExistingOrder)]
Versuch # 3;
let array = existingOrders.enumerated().map { ($0.offset, $0.element) }
print (array)
guard let firstOrder = array.first else {
break
}
print (firstOrder) // should be a tuple of index and custom object
Wie greife ich das optionale erste Element in einem Array und Rückgabe Index und Element?
Vielen Dank
bearbeiten. Der Grund, warum ich das mache, ist, dass ich das korrekte Objekt auf eine andere Klasse übertragen kann.
// transfer all
while (factory.existingOrders.count > 0) {
let array = myOrderBook.existingOrders.enumerated().map { ($0.offset, $0.element) }
guard let firstOrder = array.first else {
break
}
let index = (firstOrder.0)
factory.orderBook.transfer(index: index, destination: .completedOrder)
}
Wo die Orderbook
eine Klasse ist;
Factory {
var orderBook:OrderBook = OrderBook()
}
OrderBook {
var existingOrders: [ExistingOrder] = [ExistingOrder]()
var completedOrders: [CompletedOrder] = [CompletedOrder]()
}
Und die Idee ist, dass ich ein Objekt aus bestehenden Aufträge erledigten Aufträge und umgekehrt
Die Funktion erfordert einen Index übertragen werden soll, aber ich denke, ich es umgestalten könnte, so kann ich ein Objekt übertragen stattdessen.
Bitte geben Sie ein Beispiel von dem, was Sie erreichen möchten. – PGDev
Ich denke, Versuch Nr. 3 gibt mir das Ergebnis, nach dem ich suche; Ich habe ein Array von benutzerdefinierten Objekten, die ich brauche, um den ersten und seinen Index in einem Tupel zu erhalten, und der Befehl 'existingOrders.enumerated(). Map {($ 0.offset, $ 0.element)}' scheint das zu tun (zumindest in schnellen Spielplätzen) – zardon
Wenn Sie wissen, dass es das erste Element ist, warum wollen Sie dann seinen Index? – PGDev