Почему эта константа не выводится на консоль? это просто пусто - PullRequest
0 голосов
/ 24 мая 2019

Вот фрагмент кода из более крупного приложения.Эта функция (вызывается при нажатии кнопки) просто оценивает, какой выбор из средства выбора был выбран, и назначает ему строку, а также получает ввод, введенный пользователем в текстовое поле

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

Я проверяю это, печатая выбранную строку в консоли - так что все это прекрасно работает, НО я тогда пытаюсь распечатать эту строку после структуры if / else ипечатает только пустую

Не могу понять, что subjectField печатает нормально при прохождении через if / else - так что логика работает ... но я пытаюсь печатать после thelogic и печатает только пустую строку или возврат каретки(Я добавил еще один оператор печати после печати (subjectField), и он печатался нормально с пробелом над ним.

подумал, что это может быть переменной, попытался создать глобальные переменные, а затем решил попробовать эту функцию asa, которая работаетно почему в хек-идентификаторе subjectField корректно, когда он перебирает остальное, если неfter.

Я уверен, что упускаю что-то простое ...

@IBAction func sendButtonPressed(_ sender: UIButton) {  
    determineSelRequest(selectedReq: pickedRequest.selectedRow(inComponent: 0), selectedFlightNumber: enteredFlightNumber.text!) 
}

func determineSelRequest(selectedReq: Int, selectedFlightNumber: String) {

    var selectedRequest = pickedRequest.selectedRow(inComponent: 0)
    if selectedRequest == 0 {
        var subjectField = "Fltsum "
        print (subjectField)
    } else if selectedRequest == 1{
        var subjectField = "Crew "
        //print (selectedRequest)
    } else if selectedRequest == 2{
        var subjectField = "EDCT "
        //print (subjectField)
    } else if selectedRequest == 3 {
        var subjectField = "Loads "
        //print (subjectField)
    } else if selectedRequest == 4 {
        var subjectField = "Times "
        //print (subjectField)
    }
var selectedFlightNumber : String = enteredFlightNumber.text!

    // print ("now we just have to send mail")
    print (selectedFlightNumber)
    print (subjectField)
    //sendEmail()
}

хочу, чтобы строка, которую логика else / if помещала в subjectField, оставалась там .... не сталапустой

1 Ответ

1 голос
/ 24 мая 2019

Когда вы делаете var subjectField = "x", он объявляет новую переменную subjectField в текущей scope .В этом случае область действия - это оператор if, в котором он определен.Это означает, что переменная и ее содержимое больше не существуют после завершения if.

Однако, поскольку ваш код компилируется, я предполагаю, что у вас где-то есть другая переменная с именем subjectField.Если это так, вы можете просто присвоить эту переменную следующим образом:

if selectedRequest == 0 {
    subjectField = "Fltsum "
} else if selectedRequest == 1{
    subjectField = "Crew "
} else if selectedRequest == 2{
    subjectField = "EDCT "
} else if selectedRequest == 3 {
    subjectField = "Loads "
} else if selectedRequest == 4 {
    subjectField = "Times "
}

Если у вас нет «глобальной» переменной с именем subjectField, вы можете решить это следующим образом:

var subjectField: String?
if selectedRequest == 0 {
    subjectField = "Fltsum "
} else if selectedRequest == 1{
    subjectField = "Crew "
} else if selectedRequest == 2{
    subjectField = "EDCT "
} else if selectedRequest == 3 {
    subjectField = "Loads "
} else if selectedRequest == 4 {
    subjectField = "Times "
}
...