Jaki jest poprawny sposób przechowywania NSImage w modelu Core Data? Zakładałem dodanie Atrybutu do Entity i nadanie mu typu "Binary" powinno działać, ale nie działa. Mam tabelę z kolumną NSImageCells i nic nie pokazuje.Przechowywanie NSImage w modelu danych podstawowych
Odpowiedz
Musisz utworzyć jego reprezentację NSData.
Spójrz na Non-Standard Persistent Attributes. Zwłaszcza sekcja pod Atrybuty przekształcalne i Kod niestandardowy, jeśli to nie pozwala.
To nie odpowiada na pytanie, które zadałeś, ale w zależności od tego, ile obrazów przechowujesz, bardziej wydajne może być przechowywanie tylko ścieżek lub adresów URL do zdjęć, zapisywanie we własnej lokalizacji i ładowanie ich zgodnie z wymaganiami .
Jeśli możesz pracować w 10,5+, najprostszym sposobem jest zapisanie NSImageRep
s dla obrazu w atrybucie "Transformowalne". Domyślnie transformowalne atrybuty używają NSCoding do zarchiwizowania ich wartości w zestawie i archiwizacji przy dostępie. Dzięki temu nie trzeba pisać niestandardowych programów pobierających/ustawiających. Jeśli chcesz mieć ochotę, możesz napisać niestandardową wersję NSValueTransformer
, która konwertuje obraz na poprawioną wersję jego reprezentacji i odwrotnie w przypadku get. Jeśli używasz 10,4, potem trzeba napisać niestandardowe pobierające/ustawiające (patrz docs Apple na tworzeniu Non-standard persistent attributes. Można uzyskać obraz za powtórzeń graficznych wysyłając NSImage
wiadomość -representations
.
Jeśli chcesz wyświetlać obrazy w interfejsie poprzez wiązania, należy również zapoznać się z sekcją Displaying Images Using Bindings z kakao wiązania Programowanie wątkach.
Tutaj jest naprawdę łatwe wdrożenie
prowadzi link strona już nie istnieje. Czy –
w porządku. Pozwól mi to naprawić ... –
OK, zaktualizowałem link. Dzięki za heads up! –