我只想将一个 字符 转换为 Int 。
这应该很简单。但是我没有发现前面的答案有帮助。总是有一些错误。也许是因为我正在Swift 2.0中进行尝试。
for i in (unsolved.characters) { fileLines += String(i).toInt() print(i) }
在Swift 2.0 toInt()等中,已被初始化程序取代。(在这种情况下,Int(someString)。)
toInt()
Int(someString)
因为并非所有字符串都可以转换为int,所以此初始化程序是有 问题的 ,这意味着它返回一个 可选的int (Int?)而不是一个返回Int。最好的办法是使用来包装此可选内容if let。
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) }
或者,使用更快捷的解决方案:
let unsolved = "123abc" let fileLines = unsolved.characters.filter({ Int(String($0)) != nil }).map({ Int(String($0))! }) // fileLines = [1, 2, 3]
您可以使用flatMap:
flatMap
let fileLines = unsolved.characters.flatMap { Int(String($0)) }
flatMap返回“一个Array含有映射的非零结果transform在self” ......所以当Int(String($0))是nil时,结果被丢弃。
Array
transform
self
Int(String($0))
nil