Swift nil 可选字符串 = 空字符串

Swift nil Optional String = Empty String

这个对我来说完全没有意义。我有一个包含几个字符串的结构:

public struct Organization {
  let id: String
  let name: String
  let legacyID: String?
  let rID: String?

  public init(id: String, name: String, legacyID: String?, rID: String?) {
    self.id = id
    self.name = name
    self.legacyID = legacyID
    self.rID = rID
  }
}

请注意 legacyIDrID 是可选的。但是,如果我尝试将它们中的任何一个设置为 nil.None,它们将被设置为 ""(空字符串)。例如:

let org = Organization(id: company.companyID, name: company.name, legacyID: company.context, rID: nil)

然而,当我尝试访问 rID 时,它显示为 "" 而不是 nil。我什至尝试在 init 中直接设置 nil,但它仍然设置为 ""。这搞乱了我的平等检查。有人知道这是怎么回事吗?

注:这是Swift1.2

你得到“”作为输出,因为你的数据类型是字符串。因此,如果任何 String 变量为空或 nil,它总是显示“”。您不能使用 String 类型将 nil 作为输出。即使您直接分配 nil 也不会发生相同的输出。

已编辑: 这是我从你的代码中得到的。它工作正常。

原来是调试器的问题。如果我使用调试器检查该值,即使在调试器提示符 p/po/print org.rID 中,它也返回了不正确的值。但是,在我的代码中插入 println(org.rID) 会打印出正确的值 nil。当我不能信任调试器时,我讨厌它。当他们也从 gcd 切换到 lldb 时发生。希望这在 Xcode 7.

中得到解决