gpt4 book ai didi

ios - 如何将 NSString 转换为 Int?

转载 作者:搜寻专家 更新时间:2023-10-31 22:09:14 27 4
gpt4 key购买 nike

我对 Apple 编程完全陌生,但在阅读 Swift 之后我觉得它看起来很有趣。我正在尝试在命令行上制作一个简单的数字猜谜游戏,但我无法将整数转换为字符串。我已经尝试在互联网上搜索很多方法来执行此操作,但我不知道出了什么问题。我不想直接接受用户的输入作为整数,我宁愿将它从字符串转换为整数以便更容易处理错误(就像它在 Python 中的处理方式一样)。这就是我所做的:

import Foundation
// Get Input
let standardInput = NSFileHandle.fileHandleWithStandardInput()
// Convert to int function
func convertToInt(guess: String) -> Int {
var num: Int = guess.toInt()! // It tells me "Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)" on this line and the program stops
return num
}
println("Please enter your name.")
// Get the user's name
let data = standardInput.availableData
var name = NSString(data: data, encoding: NSASCIIStringEncoding)
println("Hello \(name)")
println("Please enter a number and I will try to guess it.")
// Get the user's number
let data2 = standardInput.availableData
var number = NSString(data: data2, encoding: NSASCIIStringEncoding)
// Call the function to convert the number to an int
var newnum = convertToInt(number)
println(newnum)

运行后,它告诉我

fatal error: Can't unwrap Optional.None (lldb)

在调试区。我不知道如何解决这个问题。有没有办法将数字直接从 NSString 转换为 Int

最佳答案

你的代码有几个问题,但为了回答手头的问题,问题在于你滥用了可选值(这在 wwdc 的 swift 视频简介中有所介绍)。

toInt 方法返回一个可选的而不是 Int。可选项是问题的答案:“如果我要转换的字符串不是数字,应该返回什么?”尝试从不存在的字典中访问键也是同样的事情。在 objective-c 世界中我们返回 nil,但在 Swift 中它是可选的。您需要做的是检查一个值是否返回,如果是,您就可以使用它。例如

 if let number = guess.toInt() {
//now we can do something with number because we know conversion worked
println(number)
} else {
println("a number wasn't entered")
}

关于ios - 如何将 NSString 转换为 Int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24153042/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com