2016-11-08 38 views
1

我使用雨燕2.3和我有打電話給我的自定義對象的數組以下類型的數組Player從數組的數組葛亭對象和它的序列號

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

我將如何使用for-in循環或其他東西,所以我可以得到數組索引和對象?

我有以下幾點:

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") 
} 

打印:

[ 「三」, 「四有」]

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