ios - '>' 的 Swift String 重载行为

标签 ios iphone swift ios8

我有一个 Playground :

let astr = "A"
let bstr = "a"

astr > bstr

"A" > "a"

输出: 第一次使用 > 为 false,第二次使用为错误:

Playground 执行失败::69:5: 错误:运算符“>”的使用不明确 “一个”>“一个” ^ Foundation.>:1:6: 注意:找到了这个候选人 func >(lhs: String, rhs: NSString) -> bool ^ Foundation.>:1:6: 注意:找到了这个候选人 func >(lhs: NSString, rhs: String) -> bool

这是我遇到的真正问题的深入分析:

var team = ["Jane","Kate","George","Zulma"]
let sortedteam = team.sorted({ $0 > $1 })

这给了我同样的错误。

最佳答案

您可以尝试改用全局排序函数,它没有这个问题:

var team = ["Jane","Kate","George","Zulma"]
let sortedteam = sorted(team, { $0 > $1 })

或者,您可以删除闭包的一些简洁性,以便编译器知道它比较的是什么类型。

var team = ["Jane","Kate","George","Zulma"]
let sortedteam = team.sorted({ (s1: String, s2: String) in s1 > s2 })

关于ios - '>' 的 Swift String 重载行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26413966/

相关文章:

ios - 仅在 iPhone 7 之前的设备上使用前置摄像头时崩溃

ios - 检测设备是否为 iPhone X

ios - 在 C4 - c4 框架中动画形状时的工件

iphone - iPhone 的 Twitter 连接弹出页面

swift - 由于 macOS Catalina Xcode 应用程序每晚都会因 CVCGDisplayLink 异常而崩溃

ios - 为什么 AVPlayer 在 'playbackBufferEmpty' 之后立即以 'playbackLikelyToKeepUp' 状态失败?

iphone - 阻止用户在我的应用中使用表情符号微笑

iphone - 清理 iPhone 模拟器

ios - 委托(delegate)协议(protocol)的实现方法在哪里调用?

swift - 如何在 tvOS 应用程序中默认关注文本字段,而不是第一响应者?