字符串segue.identifier与文字无法按预期工作的SWIFT比较

时间:2014-11-11 15:18:48

标签: string swift comparison

我正在尝试将String与文字进行比较。调试时,似乎两个值都是" goToMCFDailySchedule3"比赛。然而,执行流似乎是跳过if块。有什么想法吗?

 println("value of the segue is: \(segue.identifier)")

 if segue.identifier? == "goToMCFDailySchedule3" {
      // Not entering here
 }

执行结果是:

 value of the segue is: Optional("goToMCFDailySchedule3")
 (lldb) 

我不知道为什么println显示为Optional。我想这与String Optionals的性质有关。

2 个答案:

答案 0 :(得分:2)

你不需要吗?在segue标识符的末尾,试试这个:

if segue.identifier == "goToMCFDailySchedule3" {}

//已编辑

如果日志显示标识符是可选的,请尝试使用感叹号打开它:

segue.identifier!

答案 1 :(得分:1)

标识符返回一个可选值,因为segue可能有或没有标识符名称。您应该尝试在比较之前解包返回的可选值。

这样做:

if let identifier = segue.identifier {
  // Do the comparisons
}

这段代码让你知道标识符是否确实有值,如果没有,程序不会尝试将“它的值”与任何东西进行比较,并将传递if声明。