分享
三行代码  ›  专栏  ›  技术社区  ›  Catch

排序结构->二进制运算符“<”不能应用于两个“字符串?”操作数[重复]

  •  0
  • Catch  · 技术社区  · 4 天前

    我有这个结构:

    struct HostModel {
        var hostName: String?
        var hostPhoneNumber: String?
        var hostEmail: String?  
    }    
    
    var hosts = [HostModel]()
    

    这是通过从Firebase数据库下载来填充的。

    //Getting the data....     
    
    
      let hostData = HostModel(hostName: dict["hostName"] as? String, hostPhoneNumber: dict["hostPhoneNumber"] as? String, hostEmail: dict["hostEmail"] as? String)
                            self.hosts.append(hostData)    
    

    self.hosts.sorted { (lhs, rhs) -> Bool in
                        return lhs.hostName < rhs.hostName
                    }    
    

    这会产生错误:

    1 回复  |  直到 4 天前
        1
  •  0
  •   Eilon    4 天前

    不能比较错误消息中写入的可选字符串。打开字符串,然后尝试比较。

    self.hosts.sorted { lhs, rhs in
        guard let lhsName = lhs.hostName, let rhsName = rhs.hostName else { return false }
        return lhsName < rhsName
    }