2016-10-20 22 views
3

私は2種類のオブジェクトを持つ配列を持っています:受賞したものと受賞していないものです。私は配列をソートして、授与されたオブジェクトが最初に配置され、残りが後に配置されるようにしたいだけです。 、キーに基づいて配列をソートする方法は?

if let awarded = achievements[indexPath.row].userRelation["awarded"] as? String where awarded != "<null>" { } 

私が成果をソートし、最初にそれらを追加する「を受賞」私の開封された値を使用したいものを括弧内:ここ

は「受賞」キーを定義するコードです最後は残りの部分です。

どうすればいいですか?

+0

ここで「成果」とは何ですか?これはオブジェクトで、 'userRelation'辞書を含んでいますか?奇妙なエンティティモデルの種類:/ – alexburtnik

+0

これは、プロパティの束を含んでいます。そのうち1つは、「受賞」キーを持つuserRelationです。 –

+0

var記述子= NSSortDescriptor(キー:「受賞」、昇順:false) var stories =( NSArrayとしての成果物).sortedArray(usingDescriptors:[記述子]) –

答えて

2

sortの機能を試してみると非常に便利です。場所での使用にこの並べ替えるに

let sortedAchievements = achievements.sorted{ $0.userRelation["awarded"] < $1.userRelation["awarded"] } 

achievements.sort{ $0.userRelation["awarded"] < $1.userRelation["awarded"] } 

を私はあなたのモデルをリファクタリングすることをお勧めします。辞書の代わりにオブジェクトや構造体を使う方が良いでしょう。また、awardedはプロパティでなければなりません。Stringではなく、正しく表示されますか?

関連する問題