首页 > 解决方案 > 参数类型“字符串?” 不符合预期的类型“StringProtocol”

问题描述

在此处输入图像描述

使用compareon a Stringin时会发生此错误Swift 5,它只接受StringProtocol,但我想使用它String并且无处可做。

我已经搜遍了,无法理解似乎是什么问题。

标签: iosswiftstringstring-comparisonswift5

解决方案


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

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

推荐阅读