在按钮单击上按升序和降序排序之间交替

时间:2016-04-18 20:20:15

标签: swift

我想借助我的餐桌。 我有这个代码部分:

func ReSort() {
   CoreDataItems.sortInPlace({$0.RowName< $1.RowName})
   tableView.reloadData()
}

按下按钮后此功能将调用。 但我怎么能解决这个问题,如果我第一次按下按钮,排序功能就会这样排序:

$0.RowName < $1.RowName

第二次这样:

$0.RowName > $1.RowName

等等。

1 个答案:

答案 0 :(得分:1)

您需要将排序的当前状态存储在实例变量中,例如

var sortAscending : Bool = true

现在你可以这样做:

func ReSort() {
   CoreDataItems.sortInPlace({sortAscending ? $0.RowName < $1.RowName : $0.RowName > $1.RowName})
   sortAscending = !sortAscending
   tableView.reloadData()
}

sortAscending的值将在比较中的><之间进行选择。作业

sortAscending = !sortAscending
排序完成后,

将在truefalse之间切换。

具有相同效果的较短但略显不易读的代码使用==运算符替代XORBool上的反转func ReSort() { CoreDataItems.sortInPlace({sortAscending == ($0.RowName < $1.RowName) }) sortAscending = !sortAscending tableView.reloadData() }

let image = UIImage(named: "nameOfImageInXCAssets")