2016-04-14 4 views
1
class Question: Object { 
    var answers = List<Answer>() 

} 

class Answer: Object { 

    dynamic var date: NSDate? = nil 
    dynamic var question: Question! 
    dynamic var correct = false 

} 

Ich habe eine Datenbank mit Questions gefüllt. Wenn ein Benutzer eine Frage beantwortet, wird ein Antwortobjekt erstellt, mit dem heutigen Datum und wenn die Antwort richtig war. Mit Realm, ist es möglich, eine Abfrage zu machen, die die Frage in der Datenbank mit der geringsten Anzahl von richtigen Antworten findet?Wie wird eine Abfrage in Realm durchgeführt, die Attribute für verwandte Objekte überprüft?

Ich habe versucht, mit

realm.objects(Question).filter("[email protected] == @min AND answers.correct == true") 

aber Aggregatfunktionen können nicht mit anderen Aggregatfunktionen kombiniert werden, scheint die @count und @min kann nicht in derselben Abfrage verwendet werden.

Antwort

1

Derzeit gibt es keine einfache Möglichkeit, Ergebnisse abzufragen, was Sie erhalten möchten.

Die einfache Lösung ist count Eigenschaft für richtige Antworten auf Question Objekt hinzufügen.

class Question: Object { 
    let answers = List<Answer>() 
    dynamic var correctAnswerCount = 0 
} 

Dann können Sie eine Frage mit der geringsten Anzahl von richtigen Antworten abfragen.

let fewest = realm 
    .objects(Question) 
    .sorted("correctAnswerCount", ascending: true).first 
Verwandte Themen