这个对我来说根本没有意义。我有一个结构,需要一些字符串:
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
}
}
请注意,legacyID
和rID
是可选的。但是,如果我尝试将它们中的任何一个设置为nil
或.None
,则将它们设置为""
(空字符串)。例如:
let org = Organization(id: company.companyID, name: company.name, legacyID: company.context, rID: nil)
然而,当我尝试访问rID
时,它显示为""
而不是nil
。我甚至尝试在nil
中直接设置init
,但仍设为""
。这搞砸了我的平等检查。有谁知道发生了什么事?
注意:这是Swift 1.2
答案 0 :(得分:1)
您输入“”作为输出,因为您的数据类型是String。因此,如果任何String变量为空或为零,则它始终显示为“”。使用String类型不能将nil作为输出。即使你直接指定nil,也不会发生相同的输出。
答案 1 :(得分:0)
事实证明问题是调试器。如果我使用调试器来检查值,即使在调试器提示符中,p/po/print org.rID
它也返回了不正确的值。但是,在我的代码中插入println(org.rID)
会打印正确的值nil
。当我无法信任调试器时,我讨厌它。他们也从gcd
切换到lldb
时发生了。希望这在Xcode 7中得到了理解。