Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift:按2个以上的可能值对数组排序_Swift_Sorting - Fatal编程技术网

Swift:按2个以上的可能值对数组排序

Swift:按2个以上的可能值对数组排序,swift,sorting,Swift,Sorting,我有一个这样的物体: enum State { case starting case inProgress case done } struct MyData { var state: State } var array: [MyData] 现在,我想对数组进行排序,首先是开始项,然后是inProgress项,然后是完成项。我怎样才能做到 谢谢你的帮助。试试这个(操场代码) enum状态:Int{ 立案 案件进展 结案 } 结构MyData{ 变量状态:状态

我有一个这样的物体:

enum State {
    case starting
    case inProgress
    case done
}

struct MyData {
    var state: State
}

var array: [MyData]
现在,我想对
数组
进行排序,首先是
开始
项,然后是
inProgress
项,然后是
完成
项。我怎样才能做到

谢谢你的帮助。

试试这个(操场代码)

enum状态:Int{
立案
案件进展
结案
}
结构MyData{
变量状态:状态
}
让myData1=MyData(状态:.inProgress)
让myData2=MyData(状态:。完成)
让myData3=MyData(状态:。正在启动)
让myData4=MyData(状态:。正在启动)
让myData5=MyData(状态:.inProgress)
变量数组=[myData1、myData2、myData3、myData4、myData5]
var sortedArray=array.sorted(){$0.state.rawValue<$1.state.rawValue}
打印(Darray)
这种方法使用枚举的rawValue int对项进行排序。我从上面的print语句中获得了预期的输出

试试这个(操场代码)

enum状态:Int{
立案
案件进展
结案
}
结构MyData{
变量状态:状态
}
让myData1=MyData(状态:.inProgress)
让myData2=MyData(状态:。完成)
让myData3=MyData(状态:。正在启动)
让myData4=MyData(状态:。正在启动)
让myData5=MyData(状态:.inProgress)
变量数组=[myData1、myData2、myData3、myData4、myData5]
var sortedArray=array.sorted(){$0.state.rawValue<$1.state.rawValue}
打印(Darray)

这种方法使用枚举的rawValue int对项进行排序。我从上面的print语句中获得了预期的输出

一种可能的方法

使
状态
符合
可比性

enum State: Int, Comparable {

    case starting = 0
    case inProgress = 1
    case done = 2

    static func <(lhs: State, rhs: State) -> Bool {
        return lhs.rawValue < rhs.rawValue
    }
}

一种可能的方法

使
状态
符合
可比性

enum State: Int, Comparable {

    case starting = 0
    case inProgress = 1
    case done = 2

    static func <(lhs: State, rhs: State) -> Bool {
        return lhs.rawValue < rhs.rawValue
    }
}
let elms: [MyData] = ...
let sorted = elms.sorted { $0.state < $1.state }