斯威夫特“模糊地使用运算符”>'“

时间:2014-08-23 04:49:51

标签: swift xcode6

我刚刚下载了Xcode6-beta6。我收到编译错误"模糊地使用运算符'>'"以下代码

reversed = sorted(names, { s1, s2 in s1 > s2 } )

之前在Xcode6-beta5中工作。

代码来自apple swift文档https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html#//apple_ref/doc/uid/TP40014097-CH11-XID_152

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

我也有同样的问题

if ("aa" > "bb")  {
    [...]
}

  

反转=排序(名称,{$ 0> $ 1})

显然XCode无法正确推断出正确的类型" String"对于参数,从而在操作员上产生歧义。我的解决方案是显式地声明类型中的至少一个,这也使代码更具可读性。喜欢在:

if ("aa" as String > "bb")  {
    [...]  
}
     

revers = sorted(names,{$ 0 as String> $ 1})

答案 1 :(得分:2)

这似乎是基金会框架的桥梁中的一个错误。它声明了>的覆盖,以便将StringNSString NSStringString进行比较,但这些会出现(在某些情况下)匹配中的冲突。您可以通过改变语法来解决它(出于某种原因):

reversed = sorted(names, { s1, s2 in return s1 > s2 } )