文字を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)) }
flatMap
Array
「マッピングの nil 以外の結果を含むantransform
を返す」self
… の場合、結果Int(String($0))
はnil
破棄されます。
これは私が思いついたちょっとした即興のトリックです。Character
に変換するのは難しい場合がありますが、これを
行うInt
ために簡単に変換できます。String
Int
fileLines = Int(String(i))!
もちろん、これはあまり最適化されていませんが、あなたのような場合にはうまくいきます。
実際。より簡単な方法は、Swift 2.o で String を Int に変換することです。
let chars = Int(chars)
これがあなたがしようとしているものかどうかはわかりません...しかし、もちろん、これをループに簡単に適用できます。