2015-06-15 6 views
1

В настоящее время мы пытаемся проверить, являются ли три значения, которые я только что преобразовал из строк в парные, nil из UITextFields aValue, bValue и cValue.Swift не позволит мне использовать `! =`

Я не получаю ошибку компиляции от этих переменных до инструкции if внизу блока кода (показано ниже), где она вызывает ошибку компиляции, которая говорит Cannot invoke '!-' with an argument list of type '($T10, $T14)'.

var a = (aValue.text as NSString).doubleValue 
    var b = (bValue.text as NSString).doubleValue 
    var c = (cValue.text as NSString).doubleValue 
    if a != nil && b != nil && c != nil 

Может кто-нибудь помочь мне исправить эту ошибку? Любая помощь приветствуется. Спасибо

+0

Просто сравните с '0'. 'Двойные' - это не объекты, а ** базовые типы данных **, которые не позволяют 'nil'. Вместо 'a! = Nil', используйте' a! = 0' или что-то эквивалентное. –

+0

@ AlejandroIván Пожалуйста, не оставляйте ответы в виде комментариев. – nhgrif

+0

@nhgrif это не означало как ответ, а как комментарий. Я ожидал чего-то еще, чтобы дать ему полный ответ с примером. –

ответ

7

doubleValue не может быть nil. Двойное значение NSString - это простой тип (double) и не может иметь значение nil как значение, поэтому компилятор не может их сравнить. Вы можете проверить, если ваш NSString равен нулю или если doubleValue 0.

3

Я предпочитаю гораздо более компактный вариант LET цепи:

if let a = Double(aValue.text!), 
    let b = Double(bValue.text!), 
    let c = Double(cValue.text!) { 
    println(true) 
} 
Смежные вопросы