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

标签 string swift struct option-type

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

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,但它仍然设置为 ""。这搞乱了我的平等检查。有人知道这是怎么回事吗?

注意:这是 Swift 1.2

最佳答案

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

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

关于string - Swift nil 可选字符串 = 空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31837109/

相关文章:

c++ - 如何删除也是函数返回值的新分配的 char?

RubyMonk 高级字符串操作

Java - 获取字符串中子字符串之后的字符的最简单方法

c++ - 我自己的类类型不适用于 MPI_scatterv 和 Gatherv

c - 在结构中,scanf 返回 var 地址而不是值

string - Ada 语言 - 如何存储函数返回的字符串值?

ios - Swift 3/SpriteKit - 用手指绘制独立的形状

swift - 只有 factor 方法可以有 swift_name 属性 Mapbox

C - 使用 malloc 为结构赋值不起作用

swift - 无法为 'Darwin' 加载底层模块