指定されたカスタムオブジェクトの配列の最初の項目を返し、インデックス配列と最初のカスタムオブジェクト要素を返したいので、それ。Swift - 配列の最初の項目を取得し、要素とインデックスを返します。
すなわち:
let firstOrder = existingOrders.enumerated().flatMap{$0,$1}.first
またはこれが実際のオブジェクトを返すされていない#1
let array = existingOrders.enumerated().map { (a, b) in return [$0.index : $1.element] }.first
又は試行#2
let array = existingOrders.enumerated().map { ($0.offset, $0.element) }.first
print (array)
試みます。タプルを返すようです。
existingOrders = [ExistingOrder, EngineYard.ExistingOrder, EngineYard.ExistingOrder]
それは以下を返します。
[(0, EngineYard.ExistingOrder), (1, EngineYard.ExistingOrder), (2, EngineYard.ExistingOrder)]
試み#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
オプションの最初のアイテムを配列で取得してインデックスと要素を返すにはどうすればよいですか?
感謝
編集。私がこれをやっている理由は、正しいオブジェクトを別のクラスに転送できるようにするためです。 Orderbook
がクラスである
// 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)
}
。
Factory {
var orderBook:OrderBook = OrderBook()
}
OrderBook {
var existingOrders: [ExistingOrder] = [ExistingOrder]()
var completedOrders: [CompletedOrder] = [CompletedOrder]()
}
そしてアイデアは私が完了した注文およびその逆
機能を既存の注文からオブジェクトを転送したいということですが、インデックスが必要ですが、私はそう、私はオブジェクトを転送することができ、それをリファクタリングことができると思います代わりに。
達成しようとしているものの例を挙げてください。 – PGDev
私は試行#3が私に結果を与えていると思う。最初のものとそのインデックスをタプルで取得するために必要なカスタムオブジェクトの配列があり、 'existingOrders.enumerated()。map {($ 0.offset、$ 0.element)}}'コマンドはそれを行うようです少なくとも迅速な遊び場で) – zardon
それが最初の要素であることが分かっているなら、なぜそのインデックスを望むのですか? – PGDev