【发布时间】:2020-06-21 16:30:58
【问题描述】:
当在Swift 5 中的String 上使用compare 时会出现此错误,它只接受StringProtocol,但我想在String 上使用它,但无处可做。
我已经搜索了所有内容,但无法理解似乎是什么问题。
【问题讨论】:
标签: ios swift string string-comparison swift5
当在Swift 5 中的String 上使用compare 时会出现此错误,它只接受StringProtocol,但我想在String 上使用它,但无处可做。
我已经搜索了所有内容,但无法理解似乎是什么问题。
【问题讨论】:
标签: ios swift string string-comparison swift5
Optional<String>(又名String?)不符合StringProtocol(这是有道理的)的问题。你应该打开可选的,有几种方法:
if let/guard 解包
(if let version = dbData?.version {
//compare
})dbData!.version,强烈不建议这样做,因为如果 Optional 是nil,它可能会导致应用程序崩溃
【讨论】:
dbData?.version.map { version.compare($0, options: .caseInsensitive, range: nil, locale: nil) } 这样的东西,你只能在值不为零时进行比较,并且你可以提供一个默认值,在它的末尾使用?? 可能更有意义。