2017-07-21 24 views
0

我想枚舉我的數組Any對象,並有權訪問元素的索引。然而,迅速引發錯誤:枚舉swift中的任何對象的數組

Type '() -> EnumeratedSequence<[Any]>' does not conform to protocol 'Sequence'`

我的代碼是:

var arrValues : [Any]! 

for (index, ob) in arrValues.enumerated() { 
    print("\(index): '\(ob)'") 
} 

如何解決呢?

回答

1

您需要按照正確的語法,我還以爲你在做像下面的圖片,

enter image description here

但是,實際的代碼是

for (index, ob) in arrValues.enumerated(){ 
//..... 
} 

此外,你需要一個Optional var檢查它有價值與否。

var arrValues : [Any]? 

    if arrValues?.count != nil{ 
     for (index, ob) in (arrValues?.enumerated())! { 

      print("\(index): '\(ob)'") 
     } 
    }else{ 
     print("Array is Empty") 
    } 

輸出

點擊here看到輸出。

1

這是你去

var arrValues = [Any]() 
    for var i in 0..<arrValues.count { 

     print("\(i): '\(arrValues[i])'") 
    } 

方式這也將工作

var arrValues = [Any]() 
for (index, ob) in arrValues.enumerated() { 
    print("\(index): '\(ob)'") 
} 
+0

感謝,是有辦法使用列舉的方式()? –

+0

請注意您將arrValues定義爲隱式解包可選的區別。如果它適合你,請接受答案。 –

+0

您不需要手動創建範圍'0 .. Palle

1

看起來像是聲明一個數組而不創建它的實例。

您可以使用下面的代碼片段:

var arrValues = [Any]() 

for (index, ob) in arrValues.enumerated() { 
    print("\(index): '\(ob)'") 
}