2014-08-14 4 views
-1

Я в настоящее время делает приложение калькулятор и мне нужно использовать код bridgeToObjectiveC, но это больше не доступны в текущей бета-версии Xcode 6. Это код, мне нужно написать:xcode beta bridgeToObjectiveC альтернатива?

@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», выделяется строка letNumber и говорит «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) 
+0

Является ли 'txtAdditionFirst'' 'IBOutlet'? Это определенно связано? – Tommy

ответ

0

Если ваш код остановки на let firstNumber = ... с нулевой необязательного преобразования, это означает, что вы неправильно предположить, что либо txtAdditionFirsttextAdditionFirst.text или не равен нулю. UITextField делает заверения в том, что .text никогда не является ничем, поэтому лучше всего, чтобы вы не подключили txtAdditionFirst в Interface Builder.

Вы можете проверить это, проверив определение переменной, чтобы увидеть, что оно заполнено или установить точку останова над линией и посмотреть, нет ли она.

Если у вас есть веская причина для переменных равного нуля, то есть несколько вариантов сделать это:

// 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 не ноль. Второй способ использует опциональную цепочку для получения необязательного значения поплавка, затем разворачивает его, если он не равен нулю или возвращается к 0.

Смежные вопросы