2017-09-22 21 views
0

CoreDataクエリをフィールド値でソートするにはどうすればよいですか?Swift CoreDataのキー値で並べ替え

例: フィールドに「タイプ」の行があります。私は最初にtype = "car"、次にtype = "bike"、次にtype = "truck"でソートして結果を得たいと思います。以下のような 何か:

request.sortDescriptors = [NSSortDescriptor(key: "type=car,type=bike,type=truck", ascending: true)] 

それはスウィフトのCoreDataで可能ですか?ありがとう

P.S. Swiftバージョン> = 3

答えて

0

NSSortDescriptorは一度に1つのキーを対象としていますが、ループを使用して同様のことを行うことができると思います。

keys = ["car", "bike", "truck"] 
var descriptors = [] 

for key in keys { 
    let descriptor = NSSortDescriptor(key: key, ascending: true) 
    descriptors.append(descriptor) 
} 

request.sortDescriptors = descriptors 
+0

を好きなようにあなたはtypeにアルファベット順の並べ替えを行うことができますか、あなたは、キーを並べ替えるだろう、各キー値の優先順位を決定するカスタムソート記述子を作ることができますコアデータモデルのフィールド/属性の値をソートしているためです。 しかし、フィールドは「タイプ」なので、「車」でソートすることはできません。 しかし、ソート記述子には1つのキーしかありません時間 –

0

NSSortDescriptorを使用すると、一度に1つのキーでソートすることができます。そのため、NSSortDiscriptorの配列を使用して、何をしたいのかを理解する必要があります。

しかし、コアデータモデルのフィールドによるソートの基本を理解しているようには思えません。

typeのキーでのみ並べ替えることができます。 「車」,「自転車」,「トラック」

ですから、これはないだろう

NSSortDescriptor.init(key: "type", ascending: true) { (lhs, rhs) -> ComparisonResult in 
    /* calculation for your custom sort order */ 
} 
+0

私はコアデータの基礎を理解しています。問題は、クラスの可能性と構文についてです。私がSQLクエリで尋ねていることをすることは可能です。 – Djanym

関連する問題