试图将数组的数组更改为数组

时间:2018-07-11 15:03:09

标签: ios arrays swift

尝试将数组数组转换为数组。
例如: 我想将[["1"],["2"],["3"]]转换为[1,2,3]

我尝试了许多解决方案,但是这些解决方案似乎都无法在最新的工作Swift(Swift 4)上运行。

 var lat = [] as [[String]]
    for i in 0..<holder.count {
        if i % 4 == 0 {
            lat.append(holder[i] as! [String])
        }
        if ((i+1) % 4) == 0 {
            type.append(holder[i])
        }
        if (i % 4) == 1 {
            long.append(holder[i])
        }
        if (i % 4) == 2 {
            speed.append(holder[i])
        }
    }


    let reducedLat = lat.joined().compactMap(Int.init)
    print(lat)
    print(reducedLat)

这段代码什么也没有产生,我想知道为什么xcode无法识别lat中的值?将其转换为我想要的数据类型。 谢谢!

当我尝试直接转换为Int时,也会引发错误...

var lat = [] as [[Int]]
    //let reducedLat = lat.joined().compactMap(Int.init)
    //print(reducedLat)

    for i in 0..<holder.count {
        if i % 4 == 0 {
            lat.append(holder[i] as! [Int])
        }
        if ((i+1) % 4) == 0 {
            type.append(holder[i])
        }
        if (i % 4) == 1 {
            long.append(holder[i])
        }
        if (i % 4) == 2 {
            speed.append(holder[i])
        }

    }



    print(lat)

日志上的错误-'无法将类型'Swift.String'(0x1051c49f8)的值强制转换为'Swift.Int''

1 个答案:

答案 0 :(得分:3)

  • flatMap铺平数组
  • mapString的{​​{1}}数组

    Int

  • let array = [["1"],["2"],["3"]] let flattenedArray = array.flatMap{$0}.map(Int.init) 铺平数组
  • joinedcompactMap的{​​{1}}数组

    String