1 nsstring ios swift swift-playground
当我使用硬编码数据的直径和高度Swift运行模拟器很好,但当我尝试使用TextField.text.toInt()使用文本值,然后我不断收到非常恼人的错误消息: - 无法调用\ $ st15类型的参数列表
我哪里错了.我是Swift的新手,之前只使用过AppInventor来创建一个有几千次下载的应用程序.我是一个热情但可能很慢的学习者,但如果有人能帮助我一点点,我会到那儿.注意:公式只是PIr2 xh来给出汽缸容积.我想用直径来解释我每次减半的原因.
let PI = 3.142
var bodyDiameter = bodyDiameterTextField.text.toInt() // 3.0
var bodyHeight = bodyHeightTextField.text.toInt() // 10.0
var cylinderVolume: Double
var cylinderVolume = (PI * (bodyDiameter / 2.0) * (bodyDiameter / 2.0)) * bodyHeight
println("cylinderVolume")
cylinderVolumeLabel.text = "(cylinderVolume)"
Run Code Online (Sandbox Code Playgroud)
以下是与Bodydiameter和Bodyheight的硬编码值相同的代码.这一切在游乐场和模拟器中都很棒.我猜它与Integers和Floats有关,但我可能会出局.
let PI = 3.142
var bodyDiameter = 3.0
var bodyHeight = 10.0
var cylinderVolume = (PI * (bodyDiameter / 2.0) * (bodyDiameter / 2.0)) * bodyHeight
println("cylinderVolume")
cylinderVolumeLabel.text = "(cylinderVolume)"
Run Code Online (Sandbox Code Playgroud)
您的代码有几个错误.
首先,并不是真正的错误,已经有一个π的内置常量,命名M_PI.使用它而不是定义自己的PI常量.
接下来,String.toInt()返回一个Int?.问号意味着返回类型确实存在Optional<Int>.这是一个空((nil)或包含的容器Int.如果要使用该Int值,则需要打开它.但是,您可能想要检查它Optional不是nil第一个.
接下来,假设你打开它Int,你不能对Swift中的mixed Int和Double值执行算术运算.你必须转换为全部Int或全部Double.你可能想要全部使用Double.事实上,你可能根本不想转换Int为Double.您可能希望首先Double从文本字段中获取.有没有toDouble对String斯威夫特,但也有一些其他的方法来做到这一点.
最后,您需要说\(cylinderVolume)将值插入到字符串中.你的代码省略了\.
试试这个:
var bodyDiameter = (bodyDiameterTextField.text as NSString).doubleValue
var bodyHeight = (bodyHeightTextField.text as NSString).doubleValue
var cylinderVolume = (M_PI * (bodyDiameter / 2.0) * (bodyDiameter / 2.0)) * bodyHeight
println("cylinderVolume: \(cylinderVolume)")
cylinderVolumeLabel.text = "(cylinderVolume)"
Run Code Online (Sandbox Code Playgroud)
如果要以Double本地化友好的方式将字符串转换为s,或者检测字符串何时无效Double,请查找NSNumberFormatter.
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |