Frage

Ich habe einen großen Datensatz (rund 3500 Objekte), der über HTTP von einem Remote -Server zurückgibt. Derzeit werden die Daten in einem NSCollectionView dargestellt. Ein Aspekt der Daten ist ein Pfadpack für den Server für ein kleines Bild, das die Daten darstellt (denken Sie für den Einfachheit halber an.

Bindungen funktionieren fantastisch für die bereits zurückgegebenen Daten, und das Binden des Bildes über eine ValueURL -Bindung ist einfach. Die Benutzeroberfläche ist jedoch sehr träge beim Scrollen durch den Datensatz - wodurch ich denken lässt, dass die NSCollectionView Ruft alle Bilddaten an, anstatt nur die Bilddaten, die zur Anzeige der aktuell angezeigten Bilder verwendet werden.

Ich hatte den Eindruck, dass die Kakaobonten intelligent genug waren, um nur Daten für die Informationen abzurufen, die tatsächlich durch faule Laden an die Benutzeroberfläche ausgegeben werden. Dies scheint sicherlich der Fall zu sein NSTableView - Aber ich könnte in diesem Gedanken irregeführt werden.

Sollte valueurl bindend handeln und darüber hinaus faul in einem handeln NSCollectionView?

Ich könnte einen Caching -Mechanismus erstellen (in der Tat habe ich schon so etwas für eine andere Anwendung - siehe meinen Beitrag hier, wenn Sie interessiert sind NSIMAGE mit Daten aus einer asynchronen NsurlConnection besiedeln) Aber ich möchte diese Route wirklich nicht gehen, wenn ich für diese spezifische Implementierung nicht muss, da der Benutzer möglicherweise Datensätze häufig ändern könnte und möglicherweise nur kleine Untersätze der Daten wünschen.

Irgendwelche vorgeschlagenen Ansätze?

Vielen Dank!

Aktualisieren

Nach einigen weiteren Tests scheint es, dass das Problem auftritt, da eine Bildlaufaktion über den Datensatz dazu führt, dass jedes Bild vom Server angefordert wird. Sobald alle Bilder im Datensatz übergeben wurden, ist die Antwort sehr schnell.

Also Frage ... Gibt es eine Möglichkeit, den Wert von ValueURL beim Scrollen auszuschalten und wieder einzuschalten, wenn das Scrollen abgeschlossen ist?

War es hilfreich?

Lösung

Meine Lösung ist es, einen benutzerdefinierten Caching -Mechanismus wie den bereits für eine anderen Anwendung zu verwenden. Das Problem manifestiert sich, da sich das Steuerelement beim Scrollen von Bildern, die noch nicht heruntergeladen wurden, die noch nicht heruntergeladenen Dateien abrufen.

Nach dem Herunterladen sind die Bilder lokal verfügbar und daher normalisiert die Scroll -Geschwindigkeit. Die Lösung besteht darin, zu überprüfen, ob das Bild lokal verfügbar ist, und eine alternative App-Bundle-Grafik präsentieren, während das Bild im Hintergrund heruntergeladen wird. Sobald das Bild heruntergeladen wurde, aktualisieren Sie das Modell mit dem Bild, das das vom Bundle stammende Stub -Bild ersetzt.

Dadurch lässt die Benutzeroberfläche durchgehend in einem sehr reaktionsschnellen Zustand, dem Benutzer die Möglichkeit zu interagieren und ermöglicht eine benutzerdefinierte Hintergrundverwaltung der Bilder.

Natürlich wäre es schön gewesen, wenn Kakao alles für mich all das gewesen wäre, aber was würde ich dann noch tun? :-)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top