2011-01-16 7 views
1

Ich habe eine App, die Hunderte von Wörtern mit 3/4 Bildern für jedes Wort hat. Ich habe 2 Versionen von jedem Wort eines für iOS 3 und eines für Retina-Display. Ich möchte die Bilder als Daten speichern und sie mit dem entsprechenden Wort verbinden, so dass es leicht ist, sie später zu ziehen.Bild in Kerndaten und Retina-Display speichern?

meine Frage ist - Wie bekomme ich die passende Größe? es funktioniert gut mit dem @ 2x wjen Sie erhalten es aus dem App-Dateisystem, aber Hacke soll es funktionieren, wenn ich es aus Daten bekomme?

dank shani

Antwort

4

Bilder in Coredata Das Speichern ist ein eher schlecht beraten Idee. Es wird die Größe der CoreData-Datenbank erheblich vergrößern und Speicherprobleme verursachen, wenn Sie fehlerhafte Objekte mit Bildern haben. Stattdessen sollten Sie die Bilder in das Dateisystem schreiben und den Image-Pfad in CoreData speichern.

+0

Danke. Aber was sind die Unterschiede zwischen den Bildern im Dateisystem oder in der Datenbank? Ist das nicht das Gleiche? BTW jedes Bild ist nur etwa 8kbs. – shannoga

+1

Wenn sich das Image im Dateisystem befindet, können Sie es einfach entladen, indem Sie einfach die UIImage-Referenz löschen. Dies bedeutet, dass es nur geladen bleiben muss, während es verwendet wird. Wenn sich das Bild in CoreData befindet, müssen Sie das gesamte verwaltete Objekt aussortieren, um die Bilddaten zu entfernen. Darüber hinaus kann ein Fehler bei verwalteten Objekten dazu führen, dass die Bilddaten in den Speicher geladen werden, obwohl Sie nicht versuchen, das Bild anzuzeigen. –

+0

Wenn Sie jedoch die Bilder im Dateisystem speichern und es sich um vom Benutzer generierte Bilder (Fotos usw.) handelt, ist es nicht einfacher, die Daten zu sichern, wenn diese alle in den Kerndaten enthalten sind? Ich denke auch über dieses 2x Problem mit Bildern in Core Data gespeichert. Auch wenn es nicht die wünschenswerteste Art ist, Bilder zu speichern, manchmal ist es notwendig, und wir wollen immer noch in der Lage sein, Retina-Display zu nutzen. Es sieht so aus, als ob das Core Data-Image immer als Nicht-Retina erscheint und immer für die Retina-Anzeige skaliert wird. – SAHM

4

Es ist nicht ungewöhnlich, dass Sie die Bilder mit Core Data speichern. Werfen Sie einen Blick auf das Beispiel iPhoneCoreDataRecipes, um zu sehen, wie Apple die Bilder in Core Data als transformierbaren Typ speichert.

+0

Ich habe dieses Beispiel gesehen. Aber wie hilft mir das Netzhautproblem? Danke, shani – shannoga

+0

du sparst nur die Retina in einem separaten Feld und benutze sie –

+0

Hallo, meinst du, dass das iOS "weiß", welche Datei zu verwenden ist? selbst? – shannoga