我有一个 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/