【发布时间】:2016-12-07 17:11:42
【问题描述】:
我有一个自定义类:
class MyClass: MySuperClass
{
var myNumber: Int
required init ( id: Int, myNumber: Int )
{
self.myNumber = myNumber
super.init( id: id )
}
required init ( id: Int )
{
fatalError( "init() has not been implemented" )
}
}
我创建了一个长度为 20 的对象的数组:
var myNumbers: [ MyClass ] = []
我遍历数组,打印出 myNumber 的值:
0
1
1221
0
0
18394
0
0
0
0
0
1222
6
0
110
0
0
24
71
2
然后我对它们进行排序:
myNumbers.sorted( by: { $0.myNumber < $1.myNumber } )
我再次遍历数组,打印出 myNumber 的值:
0
0
0
0
0
0
0
0
0
0
0
2
1
6
24
71
110
1222
1221
18394
如您所见,有点对它们进行了排序,但不是很令人满意。
请问我做错了什么?提前谢谢你。
【问题讨论】:
-
一个独立的可重现的例子会很有帮助。 – 注意
sorted( by:)返回一个新的排序数组。sort( by:)对数组本身进行排序。 -
"'sort' 已重命名为 'sorted(by:)'"
-
我的评论适用于 Swift 3/Xcode 8。——你使用的是哪个版本?
-
我不明白的是:如果您使用“错误”的排序方法,那么原始数组根本不会被修改,而不是“几乎排序”。这就是为什么我要求一个可重现的例子。
-
一个最小的 Swift 3 示例:
var x = [3, 2, 1] ; x.sort(by: { $0 < $1 } ) ; print(x)- 你真的应该提供一个minimal reproducible example,否则我们只能猜测。