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
}
}
请注意 legacyID
和 rID
是可选的。但是,如果我尝试将它们中的任何一个设置为 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.
中得到解决
这个对我来说完全没有意义。我有一个包含几个字符串的结构:
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
。我什至尝试在 init
中直接设置 nil
,但它仍然设置为 ""
。这搞乱了我的平等检查。有人知道这是怎么回事吗?
注:这是Swift1.2
你得到“”作为输出,因为你的数据类型是字符串。因此,如果任何 String 变量为空或 nil,它总是显示“”。您不能使用 String 类型将 nil 作为输出。即使您直接分配 nil 也不会发生相同的输出。
已编辑:
这是我从你的代码中得到的。它工作正常。
原来是调试器的问题。如果我使用调试器检查该值,即使在调试器提示符 p/po/print org.rID
中,它也返回了不正确的值。但是,在我的代码中插入 println(org.rID)
会打印出正确的值 nil
。当我不能信任调试器时,我讨厌它。当他们也从 gcd
切换到 lldb
时发生。希望这在 Xcode 7.