Xcode 8 beta 6 swift 3 localizedCaseInsensitiveCompare



此代码在Xcode 8 beta 5上编译,但在beta 6中被破坏。Swift 3的新方法是什么呢?

self.categories = categories.sorted { $0.localizedCaseInsensitiveCompare($1) == ComparisonResult.orderedDescending }

错误是

参数传递给不带参数的调用

我刚刚成功地得到了相同的错误信息。

在我的测试代码中,如果我声明实例属性categories为:
var categories: [NSString] = []

我得到了这个错误信息:

错误:传递给不带参数的调用的参数

如果您的情况与此非常相似,则需要将属性声明更改为:

var categories: [String] = []

即使这不适合你的问题,你最好检查这种类型不匹配,因为Swift 3/Xcode 8 beta 6:

    桥接转换不再是隐式的。从Swift值类型到其对应对象的转换可以通过as强制实现。例如:string as NSString。任何Swift值也可以用as AnyObject转换成盒装的id表示。(se - 0072)

(摘自Xcode 8 beta 6的发布说明)

这里也是一样。我试着从官方Swift 3指南中编译一个片段,在Xcode测试版中得到了同样的错误——Argument passes to call that takes no arguments。但是,当我使用IBM Swift Sandbox时,它编译成功了。

let names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"]
func backward(_ s1: String, _ s2: String) -> Bool {
return s1 > s2
}
var reversedNames = names.sorted(by: backward)

从这里看,似乎排序的API从x.sorted(isOrderedBefore:>)到x.sorted(by:>)。我想在未来的Xcode测试版中,这个问题会得到解决。

相关内容

  • 没有找到相关文章

最新更新