[Xcode 7.1、iOS 9.1]
配列があります:_var array: [String] = ["11", "43", "26", "11", "45", "40"]
_
その(各インデックス)をIntに変換したいので、それを使用して、各インデックスのタイマーからカウントダウンします。
Swift 2のString
配列をInt
配列に変換するにはどうすればよいですか?
いくつかのリンクを試しましたが、どれも機能せず、すべてのリンクでエラーが発生しました。リンクからのコードのほとんどは、減価償却されているか、Swift 2、toInt()
メソッドなど)に更新されていません。
map
関数を使用します
let array = ["11", "43", "26", "11", "45", "40"]
let intArray = array.map { Int($0)!} // [11, 43, 26, 11, 45, 40]
UIViewController
などのクラス内で使用
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]
}
配列に異なる型が含まれる場合、flatMap
(Swift 2)またはcompactMap
(Swift 4.1+)を使用して、Int
に変換できる項目のみを考慮することができます。
let array = ["11", "43", "26", "Foo", "11", "45", "40"]
let intArray = array.compactMap { Int($0) } // [11, 43, 26, 11, 45, 40]
私は少し異なるアプローチをお勧めします
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)]