Swift 4.2使用选定的属性和排序顺序对数组进行排序

时间:2018-11-17 14:10:47

标签: swift sorting

我正在尝试在Swift 4.2中对自定义结构数组进行排序。我想以这样的方式进行整理

  1. 具有真实isSelected bool属性的对象始终位于顶部,应使用称为sortOrder(Int)的属性通过升序对所有其他对象进行排序。
  2. 具有isSelected属性的对象也应按sortOrder排序(升序)。 到目前为止,我能够实现第一个目标,但第二个目标存在一些问题。

这是我的代码:

    myArray.sort { (item1, item2) -> Bool in

        if item1.isSelected ?? false && item2.isSelected == false  {
      return true
    } else if item2.isSelected ?? false {
     return false
    }

    return item1. sortOrder < item2. sortOrder
      }

请帮助第二个目标。谢谢。

1 个答案:

答案 0 :(得分:2)

要对数组进行排序:

myArray.sort { item1, item2 in 
   if item1.isSelected == item2.isSelected {
      return item1.sortOrder < item2.sortOrder 
   }
   return item1.isSelected && !item2.isSelected 
}

获取新的排序数组

let sortedArray = myArray.sorted { item1, item2 in 
   if item1.isSelected == item2.isSelected {
      return item1.sortOrder < item2.sortOrder 
   }
   return item1.isSelected && !item2.isSelected 
}