为什么此常量无法打印到控制台?它只是空白

时间:2019-05-24 20:24:12

标签: swift variables if-statement

这是更大应用程序中的代码片段。 此函数(在单击按钮时调用)只是评估从选择器中选择了哪个选择,并为其分配一个字符串 并获得用户在文本字段中输入的输入

该部分可以正常工作,甚至可以分配在选择器中选择的正确字符串

我通过在控制台中打印选定的字符串来对此进行测试-因此一切都很好,但是我然后尝试在if / else结构之后打印该字符串,并且只打印空白

无法弄清楚subjectField在通过if / else时可以很好地打印-以便逻辑工作...但是我尝试在thelogic之后打印,并且它仅打印空白行或回车符(我添加了另一个打印语句在打印(subjectField)之后,并且打印良好,上面有空白。

认为尝试制作全局变量可能是一个可变问题,然后决定尝试将此函数作为有效的函数尝试,但是为什么在遍历其他对象(如果但不是之后)的时候,为什么在idID字段中正确呢?

我确定我缺少简单的东西。...

@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 个答案:

答案 0 :(得分:1)

执行var subjectField = "x"时,它将在当前作用域中声明一个新变量subjectField。在这种情况下,范围是在其中定义的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 "
}