arrays - 如何在swift 3中按自定义状态值对自定义对象数组进行排序?

标签 arrays sorting object swift3

假设我们有一个名为 orderFile 的自定义类,该类包含三个属性。

class orderFile  {
    var name = String()
    var id = Int()
    var status = String()
}

其中很多都存储在一个数组中

var aOrders : Array = []

var aOrder = orderFile()
aOrder.name = "Order 1"
aOrder.id = 101
aOrder.status = "closed"
aOrders.append(aOrder)

var aOrder = orderFile()
aOrder.name = "Order 2"
aOrder.id = 101
aOrder.status = "open"
aOrders.append(aOrder)

var aOrder = orderFile()
aOrder.name = "Order 2"
aOrder.id = 101
aOrder.status = "cancelled"
aOrders.append(aOrder)

var aOrder = orderFile()
aOrder.name = "Order 2"
aOrder.id = 101
aOrder.status = "confirmed" 
aOrders.append(aOrder)

问题是:我将如何根据打开、确认、关闭和取消的状态对它们进行排序?

最佳答案

您必须提供一个值,以便在排序函数中进行比较时产生适当的排序。

例如:

extension orderFile
{    
    var statusSortOrder: Int 
        { return ["open","confirmed","closed","cancelled"].index(of: status) ?? 0 }
}

let sortedOrders = aOrders.sorted{$0.statusSortOrder < $1. statusSortOrder}

关于arrays - 如何在swift 3中按自定义状态值对自定义对象数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43960799/

相关文章:

java - 继承以及在何处声明预期的通用对象

python - 在循环中添加同一类的新对象

java - 获取 Object[][] 数组的子长度

arrays - 如何在调用 Array#compact 时删除自定义类

sorting - 如何在powershell中对输出进行排序

python - 对元组列表的列表进行排序

javascript - 迭代对象属性/键

c# - 我如何比较两个锯齿状数组中的数组 C#

javascript - 在javascript中过滤对象数组

java - 在 Java 中对双链表进行排序