2017-10-12 4 views
0

は私がQuestionAnswerと呼ばれる2つのエンティティを作成しました:コアデータの多くのキーをソートする方法は?次のように

enter image description here

は今、私はある時点で、両方のエンティティでいくつかのデータを保存します。そのコードは正常に動作しています。

さて、私はその答えを質問を取得したいので、次のように、私はコードを使用します。

class func getAllQuestions(inManagedObjectContext context: NSManagedObjectContext) -> [Question] { 

    let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Question") 
    let sortDescriptor = NSSortDescriptor(key: "question_id", ascending: true) 
    let sortDescriptors = [sortDescriptor, answerDescriptor] 
    request.sortDescriptors = sortDescriptors 

    if let questions = (try? request.execute()) as? [Question] { 
     return questions 
    } 

    return [] 
} 

をあなたは私が質問をフェッチするためにコードを書いていると私は、自動的に関連する答えを得たことを見ることができるように特定の答えに。

私の要件:

しかし、私は、質問と回答は、自動的に追加され得る、私は答えがdisplay_orderでソートされたいです。

教えてください。どうすればNSSortDescriptorを追加できますか?

私が試したことはありますか?

私はこの種の記述しようとしている:

let answerDescriptor = NSSortDescriptor(key: "answers.display_order", ascending: true) 

をしかし、私は、ランタイムエラーを取得:

<NSSQLFetchRequestContext: 0x600000381110> , to-many key not allowed here with userInfo of (null) 
+0

コードで回答を並べ替えることができます。エラーで説明されているように、回答の表示順序に基づいて質問を並べ替えることはできません。 – pkallu

+0

そのコードは混乱しています。単一の 'Question'をフェッチしていますが、その結果に対してソート記述子を使用したいとしますか? –

+0

@TomHarrington私は1つの質問をフェッチしません。私は一連の質問を取ります。私が質問をするとき、私はまた、各質問の回答を並べ替えることを望む。 – Vishal

答えて

1

は、次のようなQuestionに計算された変数を作成したい:

var sortedAnswers: [Answer] { 
    let answerDescriptor = NSSortDescriptor(key: "answers.display_order", ascending: true) 
    return answers.sortedArray(using: [answerDescriptor]) 
} 

answersの関係は常にですsはソートされません。しかし、これはソートされた配列を返すことができます。

私は今これを行う新しい方法があると思いますが、私はそれに精通していません。

+1

答えをありがとう。私はあなたが計算された変数を使用して言ったようにそれを実装し、今は正常に動作します。 – Vishal

+0

@Vishal awesome –

関連する問題