Convert String Array into Int Array Swift 2?

后端 未结 4 1967
日久生厌
日久生厌 2021-01-01 14:37

[Xcode 7.1, iOS 9.1]

I have an array: var array: [String] = [\"11\", \"43\", \"26\", \"11\", \"45\", \"40\"]

I want to convert that (each index

相关标签:
4条回答
  • 2021-01-01 15:17

    Use the map function

    let array = ["11", "43", "26", "11", "45", "40"]
    let intArray = array.map { Int($0)!} // [11, 43, 26, 11, 45, 40]
    

    Within a class like UIViewController use

    let array = ["11", "43", "26", "11", "45", "40"]
    var intArray = Array<Int>!
    
    override func viewDidLoad() {
      super.viewDidLoad()
      intArray = array.map { Int($0)!} // [11, 43, 26, 11, 45, 40]
    }
    

    If the array contains different types you can use flatMap (Swift 2) or compactMap (Swift 4.1+) to consider only the items which can be converted to Int

    let array = ["11", "43", "26", "Foo", "11", "45", "40"]
    let intArray = array.compactMap { Int($0) } // [11, 43, 26, 11, 45, 40]
    
    0 讨论(0)
  • 2021-01-01 15:22

    Swift 4, 5:

    The instant way if you want to convert string numbers into arrays of type int (in a particular case i've ever experienced):

    let pinString = "123456"
    let pin = pinString.map { Int(String($0))! }
    

    And for your question is:

    let pinArrayString = ["1","2","3","4","5","6"]
    let pinArrayInt = pinArrayString.map { Int($0)! }
    
    0 讨论(0)
  • 2021-01-01 15:34

    i suggest a little bit different approach

    let stringarr = ["1","foo","0","bar","100"]
    let res = stringarr.map{ Int($0) }.enumerate().flatMap { (i,j) -> (Int,String,Int)? in
        guard let value = j else {
            return nil
        }
        return (i, stringarr[i],value)
    }
    // now i have an access to (index in orig [String], String, Int) without any optionals and / or default values
    print(res)
    // [(0, "1", 1), (2, "0", 0), (4, "100", 100)]
    
    0 讨论(0)
  • 2021-01-01 15:35

    Swift 4, 5:

    Use compactMap with cast to Int, solution without '!'.

    let array = ["1","foo","0","bar","100"]
    let arrayInt = array.compactMap { Int($0) }
    
    print(arrayInt)
    // [1, 0, 100]
    
    0 讨论(0)
提交回复
热议问题