参数类型 'String?' 不符合预期类型 'StringProtocol'

Argument type 'String?' does not conform to expected type 'StringProtocol'

Swift 5中的String上使用compare时出现此错误,它只接受StringProtocol,但我想在String上使用它并且找不到任何方法。

我搜索了所有地方,但无法理解问题所在。

问题 Optional<String>(又名 String?)不符合 StringProtocol(这是有道理的)。你应该打开可选的,有几种方法:

  1. if let/guard 展开 (if let version = dbData?.version { //compare })
  2. 提供默认值 ( `(dbData?.version ?? "")),不推荐这样做,因为它会造成不必要的冲突
  3. 强制解包 dbData!.version,强烈不推荐这样做,因为如果 Optional 是 nil
  4. ,它可能会导致应用程序崩溃