【问题标题】:Enumerate array of Any objects in swift快速枚举任何对象的数组
【发布时间】:2017-07-21 10:19:06
【问题描述】:

我想枚举我的Any 对象数组,并访问元素的索引。但是,swift抛出一个错误:

类型'() -> EnumeratedSequence' 不符合协议'Sequence'`

我的代码是:

var arrValues : [Any]!

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

如何解决?

【问题讨论】:

    标签: swift


    【解决方案1】:

    您需要遵循正确的语法,我以为您正在像下图那样做,

    但是,实际的代码是,

    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查看输出。

    【讨论】:

      【解决方案2】:

      这就是你要走的路

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

      【讨论】:

      • 请注意,您已将 arrValues 定义为隐式展开的可选选项。如果对您有用,请接受答案。
      • 您不需要手动创建范围0 ..&lt; arrValues.count。您可以只使用集合的indices 属性:for i in arrValues.indices。另外,为什么要手动增加 i? Swift 会自动完成。
      【解决方案3】:

      看起来你是在声明一个数组而不创建它的实例。

      你可以使用下面的sn-p:

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

      【讨论】:

        猜你喜欢
        • 2011-12-12
        • 2023-03-15
        • 1970-01-01
        • 2020-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-10
        • 1970-01-01
        相关资源
        最近更新 更多