【问题标题】:Sort NSArray Swift Error: could not find an overload for 'sort' that accepts the supplied arguments排序 NSArray Swift 错误:找不到接受提供的参数的“排序”的重载
【发布时间】:2014-06-03 21:12:27
【问题描述】:

我正在尝试学习 Swift 的基础知识,目前正在尝试创建一个随机数列表并对其进行排序。

var myNSArray = [1,2,3,4]
sort(myNSArray,>) //this works  =  [4,3,2,1]

var myArray: NSMutableArray = []
for i in 0..20 {
    myArray.addObject(Int(rand())%100)
}

var myNew: NSArray = myArray.mutableCopy() as NSArray
var mySorted = sort(myNew,>) //This give an error

这是错误:

...error: could not find an overload for 'sort' that accepts the supplied arguments

编辑: 我能够使用Array 重写此代码,如下所示:

var myArray: Int[] = []
for i in 0..20 {
    myArray.append(Int(rand())%100)
}
myArray = sort(myArray,>)

这样干净多了!

【问题讨论】:

  • 我对 swift 的了解很少,它不是 Objective-c,类型系统也不同。 sort 接受一个数组,而不是 NSArray。建议:现在忘记objective-c。

标签: swift


【解决方案1】:

在您的第一个示例中,myNSArray 不是 NSArray

var myNSArray = [1,2,3,4]
sort(myNSArray,>) //this works  =  [4,3,2,1]

但在这些例子中:

var myArray: NSMutableArray = []
for i in 0..20 {
    myArray.addObject(Int(rand())%100)
}

var myNew: NSArray = myArray.mutableCopy() as NSArray
var mySorted = sort(myNew,>) //This give an error

它明确地是一个NSArray 和一个NSMutableArray。这些类没有声明sort()

【讨论】:

  • 所以我想下一个问题是如何将 NSMutableArray 转换为数组。但这是让我在这个问题之外研究的问题,为指出这一点而欢呼。
  • 是的,我还没有找到快速转换!祝你好运。
  • @CharlieEgan 如果您找到了从 NSMutableArray 转换为 Array 的方法,请分享。
  • 到目前为止我还没有,如果我这样做的话,我会的。 @Maarten
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-02
  • 2014-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多