2017-06-01 4 views
0

指定されたカスタムオブジェクトの配列の最初の項目を返し、インデックス配列と最初のカスタムオブジェクト要素を返したいので、それ。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]() 
} 

そしてアイデアは私が完了した注文およびその逆

機能を既存の注文からオブジェクトを転送したいということですが、インデックスが必要ですが、私はそう、私はオブジェクトを転送することができ、それをリファクタリングことができると思います代わりに。

+3

達成しようとしているものの例を挙げてください。 – PGDev

+0

私は試行#3が私に結果を与えていると思う。最初のものとそのインデックスをタプルで取得するために必要なカスタムオブジェクトの配列があり、 'existingOrders.enumerated()。map {($ 0.offset、$ 0.element)}}'コマンドはそれを行うようです少なくとも迅速な遊び場で) – zardon

+0

それが最初の要素であることが分かっているなら、なぜそのインデックスを望むのですか? – PGDev

答えて

0

私が探していた答えは、

let array = myOrderBook.existingOrders.enumerated().map { ($0.offset, $0.element) }

しかし、私は私のコードをリファクタリングするために必要なことがわかりました。

ありがとうございました。

問題をクローズしました。

関連する問題