2016-04-18 7 views
1

私はテーブルを頼りにしたいと思います。 は、私はこのコードの一部を持っている:ボタンをクリックして昇順と降順の並べ替えを切り替える

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

この機能は、ボタンを押した後に呼び出します。 しかし、どのように私はボタンを最初に押すと、ソート機能は、この方法のようにそれを並べ替えられますことを、この問題を解決することができます。

$0.RowName < $1.RowName 

と、このような二回目:

$0.RowName > $1.RowName 

とそうです。

答えて

1

ソートの現在の状態をインスタンス変数に格納する必要があります。 sortAscendingの値が比較に><の間で選択します

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

var sortAscending : Bool = true 

今、あなたはこれを行うことができます。ソート後に行わ割り当て

sortAscending = !sortAscending 

truefalse切り替わります。

同じ効果があります短いが、わずかに少ない読み取り可能なコード

は反転 XOR Bool上の値の代わりとして ==演算子を使用しています。

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

おかげで、これは罰金:)の作品変数insteadsを使用する方法があります定数RowNameの? – Stack108

+0

@ Stack108よろしくお願いします!私はあなたの[他の質問](http://stackoverflow.com/q/36710670/335858)を見たので、あなたは答えを知っていると思います。 – dasblinkenlight

関連する問題