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 这意味着您无法将Stringnil 进行比较......所以尝试检查该字符串是否为空

 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 转换时

CoreData 对多的可选关系永远不能为零?

Swift“无法将''类型的值转换为'String'类型