【问题标题】:xcode beta bridgeToObjectiveC alternative?xcode beta bridgeToObjectiveC 替代方案?
【发布时间】:2014-08-14 20:35:11
【问题描述】:

我目前正在制作一个计算器应用程序,我需要使用 bridgeToObjectiveC 代码,但在当前的 xcode 6 测试版中不再可用。这是我需要编写的代码:

 @IBAction func btnAdditionCalculate(sender: AnyObject) {

    let firstNumber = txtAdditionFirst.text.bridgeToObjectiveC().floatValue
    let secondNumber = txtAdditionSecond.text.bridgeToObjectiveC().floatValue
    let answer = firstNumber + secondNumber

    var answerFormat: NSString = NSString(format: "%0.0f", answer)

    labelAdditionAnswer.text = " \(answerFormat)"

}

我知道我需要使用 NSString 并且我尝试这样做但它不起作用:

@IBAction func btnAdditionCalculate(sender: AnyObject) {

    let firstNumber = (txtAdditionFirst.text as NSString).floatValue
    let secondNumber = (txtAdditionSecond.text as NSString).floatValue

    let answer = firstNumber + secondNumber

    var answerFormat: NSString = NSString(format: "%0.0f", answer)

    labelAdditionAnswer.text = " \(answerFormat)"

}

感谢大家的帮助

编辑 8/15

当我在 iOS 模拟器上运行代码时,应用程序加载并且我能够将数字放入数字 1 和数字 2 插槽,但是当我按下计算时,xcode 突出显示 let firstNumber 行并显示 Thread 1:EXC_BAD_INSTRUCTION 和这是我收到的错误消息:

2014-08-15 16:14:53.019 Innovative Calculator p1[578:8032] Can't find keyplane that                          supports type 4 for keyboard iPhone-Portrait-NumberPad; using 3876877096_Portrait_iPhone-Simple-Pad_Default
2014-08-15 16:14:55.425 Innovative Calculator p1[578:8032] Can't find keyplane that supports type 8 for keyboard iPhone-Portrait-DecimalPad; using 1425143906_Portrait_iPhone-Simple-Pad_Default
fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb) 

【问题讨论】:

  • txtAdditionFirstIBOutlet 吗?确定有联系吗?

标签: objective-c xcode swift xcode6


【解决方案1】:

如果您的代码在 let firstNumber = ... 上停止并带有 nil 可选转换,这意味着您错误地假设 txtAdditionFirsttextAdditionFirst.text 不是 nil。 UITextField 保证.text 永远不会为零,因此最好的选择是您未能在 Interface Builder 中连接 txtAdditionFirst

您可以通过检查变量定义以查看它是否已填充或在行上方设置断点并查看它是否为 nil 来验证这一点。

如果您有充分的理由将变量设为 nil,那么您有两种选择:

// The long way (mutable)
var firstNumber:Float = 0
if let value = textField?.text {
    firstNumber = (value as NSString).floatValue
}

// The short way (not mutable)
let firstNumber = (textField?.text? as NSString?)?.floatValue ?? 0.0

第一种方法最初将数字设置为零,然后使用可选链接来测试 textField 和 textField.text 是否不为零。第二种方式使用可选链来获取可选的浮点值,如果不是 nil 或回退到 0,则将其解包。

【讨论】:

    猜你喜欢
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 2012-10-05
    相关资源
    最近更新 更多