文字をIntに変換したいだけです。
これは単純なはずです。しかし、以前の回答が役立つとは思いませんでした。常に何らかのエラーがあります。Swift 2.0で試しているからかもしれません。
for i in (unsolved.characters) {
fileLines += String(i).toInt()
print(i)
}
文字をIntに変換したいだけです。
これは単純なはずです。しかし、以前の回答が役立つとは思いませんでした。常に何らかのエラーがあります。Swift 2.0で試しているからかもしれません。
for i in (unsolved.characters) {
fileLines += String(i).toInt()
print(i)
}
Swift 2.0 ではtoInt()、 などがイニシャライザに置き換えられました。(この場合、Int(someString).)
すべての文字列を intに変換できるわけではないため、このイニシャライザはfailableです。つまりInt?、単にInt. 最善の方法は、 を使用してこのオプションをアンラップすることですif let。
あなたが何をしようとしているのか正確にはわかりませんが、このコードはSwift 2で機能し、あなたがやろうとしていると私が思うことを達成します:
let unsolved = "123abc"
var fileLines = [Int]()
for i in unsolved.characters {
let someString = String(i)
if let someInt = Int(someString) {
fileLines += [someInt]
}
print(i)
}
または、Swifter ソリューションの場合:
let unsolved = "123abc"
let fileLines = unsolved.characters.filter({ Int(String($0)) != nil }).map({ Int(String($0))! })
// fileLines = [1, 2, 3]
これをさらに短縮するには、次のようにしflatMapます。
let fileLines = unsolved.characters.flatMap { Int(String($0)) }
flatMapArray「マッピングの nil 以外の結果を含むantransformを返す」self… の場合、結果Int(String($0))はnil破棄されます。
これは私が思いついたちょっとした即興のトリックです。Characterに変換するのは難しい場合がありますが、これを
行うIntために簡単に変換できます。StringInt
fileLines = Int(String(i))!
もちろん、これはあまり最適化されていませんが、あなたのような場合にはうまくいきます。
実際。より簡単な方法は、Swift 2.o で String を Int に変換することです。
let chars = Int(chars)
これがあなたがしようとしているものかどうかはわかりません...しかし、もちろん、これをループに簡単に適用できます。