2009-03-01 10 views
7

Qual è il modo corretto per memorizzare un NSImage in un modello di dati di base? Ho assunto l'aggiunta di un attributo a un ente e dandogli il tipo "binario" dovrebbe funzionare, ma non funziona. Ho una tabella con una colonna di NSImageCells e non mostra nulla.Memorizzazione di un NSImage in un Core Data modello

risposta

7

Avrai bisogno di creare una rappresentazione NSData di esso.

Dai un'occhiata alla Non-Standard Persistent Attributes. Soprattutto la sezione sotto Attributi trasformabili e Codice personalizzato se questo non risolve il problema.

8

Questo non risponde alla domanda esatta che hai chiesto, ma a seconda di quante immagini stai memorizzando può essere più efficiente memorizzare solo percorsi o URL alle immagini, salvati nella tua posizione, e caricarli come richiesto .

10

Se è possibile lavorare in 10.5+, il modo più semplice è archiviare i valori NSImageRep per l'immagine nell'attributo "Trasformabile". Per impostazione predefinita, gli attributi trasformabili utilizzano NSCoding per archiviare i loro valori sul set ed estrarlo in materia di accesso. Ciò ti evita di dover scrivere getter/setter personalizzati. Se vuoi essere elegante, puoi scrivere un numero personalizzato NSValueTransformer che converte un'immagine in una versione acrhived delle sue rappresentazioni e viceversa in get. Se stai usando 10.4, allora devi scrivere getter personalizzati/setter (vedi Documentazione di Apple sulla creazione Non-standard persistent attributes. È possibile ottenere ripetizioni immagine dell'immagine inviando il NSImage un messaggio -representations.

Se si desidera visualizzare le immagini in un'interfaccia utente tramite attacchi, si dovrebbe anche leggere la sezione Displaying Images Using Bindings dei cacao attacchi di programmazione argomenti.

1

Ecco un'implementazione molto semplice

http://objectivesheep.com/blog/nsimage_coredata/

+0

la pagina collegata non esiste più. –

+0

È un Hai ragione. Lascia che ti aggiusti ... –

+0

Ok, aggiorna il link. Grazie per il testa a testa! –