2016-05-19 10 views
1

Ich möchte einen Swift Art auf einem Realm Results Container wieWie können Swift-Sortiermethoden mit Realm-Containern kombiniert werden?

auszuführen
let swiftArray = realm.objects(Parent).sort{$0.children.count > $1.children.count} 

Wäre es möglich, swiftArray zu Results<T> zurück zu konvertieren? Der Rest meines Codes arbeitet mit Realm-Containern und das Konvertieren von allem in Swift-Arrays wird wahrscheinlich die Leistung reduzieren.

Oder, noch besser, wäre es (überhaupt) möglich, Swift-Sortiermethoden direkt auf Realm-Containern zu verwenden?

+0

Ich verstehe, dass Sie nicht auf die Objekte zugreifen können, die in Ihrem Ergebnis-Array vorhanden waren. Wenn Sie Ihre swiftArray des Typs Ergebnisse erhalten möchten hinzufügen: 'as! [THE_TYPE_YOU_WANT] '. Ersetzen Sie einfach "THE_TYPE_YOU_WANT" durch die Objekte, die Ihr Array enthalten müssen, und Sie sollten in der Lage sein, mit Ihren Real-Containern zu arbeiten. Sagen Sie mir, wenn ich Ihr Problem falsch verstanden habe – AnthonyR

+0

Ich kann auf beide Arten zugreifen. Da die Ergebnisse Daten faul initialisiert werden, arbeite ich am liebsten mit diesem Typ. In einigen Situationen benötige ich jedoch eine komplexere Sortierung. Nur in diesen Situationen scheint es notwendig, Daten in Swift-Arrays zu konvertieren. Da der Rest meines Codes Daten der Ergebnisse Typ erwartet, waren meine Gedanken, dass ich zwei Optionen habe: 1) um die Swift-Array zurück zu Ergebnissen oder 2) meinen gesamten Code zu modifizieren, um beide Ergebnisse und Swift-Arrays gleichzeitig zu unterstützen (ohne die Ergebnisse zu konvertieren, wo dies nicht erforderlich ist). Leider weiß ich nicht, wie ich das machen soll. – Gerard

+0

Wenn die Daten an [Übergeordnet] übergeben werden, wird ein Fehler angezeigt, der besagt, dass "Wert des Typs [Übergeordnet]" nicht dem Typ "Ergebnisse !" Zugewiesen werden kann. Ich würde es begrüßen zu hören, ob Sie darüber andere Gedanken haben. – Gerard

Antwort

0

Leider ist das momentan nicht möglich. Im Idealfall können Sie die Objekte über Realm unter Verwendung von .sorted("children.count") sortieren, aber zum Zeitpunkt des Schreibens unterstützt Realm die Sortierung der Schlüsselpfade nicht.

Es gibt an issue on the Realm GitHub Konto, das dieses Problem verfolgt. Bitte gehen Sie dorthin und +1, um die anderen Realm-Ingenieure wissen zu lassen, dass Sie es wollen. :)

Wenn Ihre aktuelle Lösung, in der Sie ein manuell sortiertes Swift-Array erstellen, nicht akzeptabel ist, können Sie eine weitere Eigenschaft zu Ihrem Parent Modellobjekt mit der Bezeichnung numberOfChildren hinzufügen und die Anzahl der Kinder dort speichern. Während dies bedeutet, dass Ihre Daten leicht redundant sind und die Wartung ein wenig erhöht wird, können Sie diese Eigenschaft verwenden, um Ihre Ergebnisse zu sortieren und sie vollständig in Realm zu speichern. :)

+0

Ich war mir dieses Problems auf GitHub nicht bewusst, aber es ist genau das gleiche Problem. Es wäre eine großartige Ergänzung zu Realm! Obwohl es nicht meine Präferenz ist, werde ich in der Tat in Erwägung ziehen, einige Daten vorerst überflüssig zu machen. – Gerard

Verwandte Themen