2016-11-08 9 views
1

私はスウィフト2.3を使用していますし、配列の配列からオブジェクトをGeting、それは、配列番号

`var playing = [[obj-one, obj-two],[obj-three, obj-four]]` 

がどのように私はforループインを使用するPlayer私はと呼ばれる私のカスタムオブジェクトの配列の次の型の配列を持っています私は配列のインデックスとオブジェクトを取得することができますか?

私は、次のしている:

for (index, p) in playing { -- Expression type [[Player]] is ambigious 

私はちょうどオブジェクトが属するアレイのプリントアウトできるようにしたい

for in (index, p: Player) in playing { -- same result. 

for in (index, p) in playing as! Player { -- doesn't conform to squence type 

をも試してみましたその現在のオブジェクトで作業します。

答えて

3

使用enumerated()このようなインデックスや要素、対合する:

let a = [["hello", "world"], ["quick", "brown", "fox"]] 
for outer in a.enumerated() { 
    for inner in outer.element.enumerated() { 
     print("array[\(outer.offset)][\(inner.offset)] = \(inner.element)") 
    } 
} 

を。これは、次のような出力生成:

array[0][0] = hello 
array[0][1] = world 
array[1][0] = quick 
array[1][1] = brown 
array[1][2] = fox 
+1

2.3のために「列挙」する必要があります:-) – Jonnny

0

を私はforループを使用することはありません、私のような何かをするだろうこの:

import Foundation 

var playing = [["one", "two"], ["three", "four"]] 

if let index = playing.index(where: { $0.contains("two") }) { 
    print(index) 
} else { 
    print("Not found") 
} 

この版画:

それともあなたが望むものを含む全体の部分配列を取得する:

if let subarray = playing.first(where: { $0.contains("three") }) { 
    print(subarray) 
} else { 
    print("Not found") 
} 

プリント:

[ "3"、 "4"]

1

機能的アプローチ:

let items = [["0, 0", "0, 1"], ["1, 0", "1, 1", "1, 2"]] 
items.enumerated().forEach { (firstDimIndex, firstDimItem) in 
    firstDimItem.enumerated().forEach({ (secondDimIndex, secondDimItem) in 
     print("item: \(secondDimItem), is At Index: [\(firstDimIndex), \(secondDimIndex)]") 
    }) 
} 

プリント:

項目:0、0、インデックス位置にある[0、0]

項目:0、1、インデックス位置にある[0、1]

項目:[1,0]

項目:1、0は、指数である[1、1]

項目:1、1、インデックス位置にある図1、図2は、インデックス位置にある:[1 、2]

+0

クールな回答、ありがとう – Jonnny

関連する問題