参数类型 'String?' 不符合预期类型 'StringProtocol'
Argument type 'String?' does not conform to expected type 'StringProtocol'
在Swift 5
中的String
上使用compare
时出现此错误,它只接受StringProtocol
,但我想在String
上使用它并且找不到任何方法。
我搜索了所有地方,但无法理解问题所在。
问题 Optional<String>
(又名 String?
)不符合 StringProtocol
(这是有道理的)。你应该打开可选的,有几种方法:
- 按
if let
/guard
展开
(if let version = dbData?.version {
//compare
}
)
- 提供默认值 ( `(dbData?.version ?? "")),不推荐这样做,因为它会造成不必要的冲突
- 强制解包
dbData!.version
,强烈不推荐这样做,因为如果 Optional 是 nil
,它可能会导致应用程序崩溃
在Swift 5
中的String
上使用compare
时出现此错误,它只接受StringProtocol
,但我想在String
上使用它并且找不到任何方法。
我搜索了所有地方,但无法理解问题所在。
问题 Optional<String>
(又名 String?
)不符合 StringProtocol
(这是有道理的)。你应该打开可选的,有几种方法:
- 按
if let
/guard
展开 (if let version = dbData?.version { //compare }
) - 提供默认值 ( `(dbData?.version ?? "")),不推荐这样做,因为它会造成不必要的冲突
- 强制解包
dbData!.version
,强烈不推荐这样做,因为如果 Optional 是nil
,它可能会导致应用程序崩溃