我创建了两个名为Question
和Answer
的实体,如下所示:
现在,我在某个时间点在两个实体中保存了一些数据。该代码工作正常。
现在,我想用其答案来提问,所以我使用如下代码:
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 :(得分:1)
您想在Question
上创建一个计算变量,如下所示:
var sortedAnswers: [Answer] {
let answerDescriptor = NSSortDescriptor(key: "answers.display_order", ascending: true)
return answers.sortedArray(using: [answerDescriptor])
}
answers
关系始终是未分类的。但这会让你回到一个排序的数组。
我认为现在还有另一种新方法,但我不熟悉它。