使用swift for iOS的if/and语句中的奇怪行为

使用swift for iOS的if/and语句中的奇怪行为,ios,iphone,swift,ios8,nsxmlparser,Ios,Iphone,Swift,Ios8,Nsxmlparser,我不能简单地理解这是怎么发生的,一定是误解了一些基本的swift语法。正如您在我的图片上看到的,调试器进入if语句(绿线),但是“strd”和“elementName”不一样。这怎么会发生?而且这种情况经常发生。据我所知,在swift中比较字符串时,应该使用“==” 编辑: 尼米特提出的解决方案确实有效,但它没有回答我的问题。我做错了什么?如何避免在Future中出现此错误?如果我们放置静态字符串,则工作正常 var str1 : String? = "asdd" var strd = "d

我不能简单地理解这是怎么发生的,一定是误解了一些基本的swift语法。正如您在我的图片上看到的,调试器进入if语句(绿线),但是“strd”和“elementName”不一样。这怎么会发生?而且这种情况经常发生。据我所知,在swift中比较字符串时,应该使用“==”

编辑:
尼米特提出的解决方案确实有效,但它没有回答我的问题。我做错了什么?如何避免在Future中出现此错误?

如果我们放置静态字符串,则工作正常

var str1 : String? = "asdd"

var strd = "device"
var elementname = "major"


if str1 != nil && strd == elementname
{
    println("You are in if condition")
}
else
{
    println("There is no condition mactched")
}

只需做一件事,使用变量并将elementname存储到其中并尝试。

将elementname分配给“var”实际上解决了我的问题(“let”不起作用)。为什么会这样?这看起来不像是一个典型的行为,更像是一个bug。。。您可以在此链接中查看答案。据我所知,你的问题已经解决了?我知道“let”和“var”之间的区别,这就是为什么只有“var”起作用如此奇怪。即使它现在起作用了,我还是想解释一下我做错了什么?