我只想把一个字符转换成一个Int。
这应该很简单但我没有发现以前的答案有帮助。总有一些错误。也许是因为我在Swift 2.0中尝试。
for i in (unsolved.characters) { fileLines += String(i).toInt() print(i) }
在Swift 2.0中,toInt()等已被替换为初始化器。 (在这种情况下,Int(someString))
因为并不是所有的字符串都可以转换为int,所以这个初始化器是可用的,这意味着它返回一个可选的int(Int?)而不是Int。最好的做法是打开这个可选的,如果允许的话。
我不确定你正在做什么,但是这个代码可以在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) }
或者,对于Swiftier解决方案:
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返回一个包含非自变量的非零结果的数组,因此当int(String($ 0))为零时,结果被丢弃。
原文地址:https://www.jb51.cc/swift/320622.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。