Swift 为什么这个常量不打印到控制台?它只是一片空白

Swift 为什么这个常量不打印到控制台?它只是一片空白,swift,variables,if-statement,Swift,Variables,If Statement,下面是一个更大的应用程序的代码片段。 此函数(在单击按钮时调用)仅计算从选择器中选择的选择并为其分配字符串 并获取用户在文本字段中键入的输入 该部分工作正常,甚至可以指定在选择器中选择的正确字符串 我通过在控制台中打印所选的字符串来测试这一点,所以这一切都很好,但是我尝试在if/else结构之后打印该字符串,它只打印一个空白 无法理解subjectField在通过if/else时打印得很好-因此逻辑工作。。。但是我试着在逻辑之后打印,它只打印一个空行或回车(我在打印(subjectField)之

下面是一个更大的应用程序的代码片段。 此函数(在单击按钮时调用)仅计算从选择器中选择的选择并为其分配字符串 并获取用户在文本字段中键入的输入

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

我通过在控制台中打印所选的字符串来测试这一点,所以这一切都很好,但是我尝试在if/else结构之后打印该字符串,它只打印一个空白

无法理解subjectField在通过if/else时打印得很好-因此逻辑工作。。。但是我试着在逻辑之后打印,它只打印一个空行或回车(我在打印(subjectField)之后添加了另一个打印语句),上面有一个空白,打印得很好

虽然这可能是一个可变的问题,但尝试生成全局变量,然后决定尝试此asa函数,该函数正在工作,但为什么在heck id subjectField中,当它在else if(如果)但不是之后进行迭代时,会更正它

我肯定我错过了一些简单的事情

@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中的字符串保留在那里……执行此操作时不要变为空,它在当前作用域中声明一个新变量
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 "
}
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 "
}
如果没有名为
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 "
}
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 "
}

可以肯定的是,
subjectField
是不能打印的吗?您发布的代码不应该编译。您是否有另一个名为
subjectField
的变量?可能是在包含此函数的类上?我只需要像您显示的那样去掉var-我知道它很简单