Swift:String类型的值永远不能为零,不允许比较
Posted
技术标签:
【中文标题】Swift:String类型的值永远不能为零,不允许比较【英文标题】:Swift:Value of Type String can never be nil,Comparison isn't allowed 【发布时间】:2016-11-29 12:33:44 【问题描述】:这是我的代码
func enteredByStr(S:String) -> String?
var healthactionplan : MyHealthActionPlanCondition
if healthactionplan.addedBy != nil
healthactionplan.addedBy = "System"
else
healthactionplan.addedBy = "Member"
我什至关注了This 和This。但仍然无法解决。谁能解释为什么?
【问题讨论】:
MyHealthActionPlanCondition
的声明是什么样子的?
在其他问题中,您没有填充healthactionplan
【参考方案1】:
String类型的值不能为nil,不允许比较
错误消息向您显示所有内容
addedBy 是String
。所以检查 isEmpty
上 addedBy
if healthactionplan.addedBy.isEmpty
healthactionplan.addedBy = "System"
else
healthactionplan.addedBy = "Member"
【讨论】:
【参考方案2】:我认为healthactionplan.addedBy
是字符串,因为错误说Value of Type String can never be nil
这意味着您无法将String
与nil
进行比较......所以尝试检查该字符串是否为空
if healthactionplan.addedBy.isEmpty
healthactionplan.addedBy = "Member"
else
healthactionplan.addedBy = "System"
【讨论】:
【参考方案3】:在我的示例中,字符串不能为零。我需要声明一个可以接受零的字符串。所以我声明了可选字符串:
var addedBy: String? = String()
在此之后,我可以检查字符串的 nil 值。
【讨论】:
以上是关于Swift:String类型的值永远不能为零,不允许比较的主要内容,如果未能解决你的问题,请参考以下文章
swift: 不能用字符串类型的索引下标 [Dictionary<String, AnyObject>] 类型的值
Swift 3 [String: AnyObject]() 给出了不能调用非函数类型 UInt -> Data 的值
在 swift 中将 String 类型数组转换为 Float 类型数组 不能将类型 'String' 的值分配给类型 'Double' 的下标。
不能使用 String 类型的索引为 NSDictionary 类型的值下标。从 Swift 2.3 -> 3.2 转换时