2014-07-12 15 views
5

Diciamo che ho un'entità modello con 3 attributi.
Quindi generare la sottoclasse NSManagedobject per questa entità e aggiungere metodi personalizzati con proprietà a questa classe.
In un secondo momento ho aggiunto un paio di nuovi attributi a questa entità.Aggiornamento entità modello nucleo dati e sottoclasse NSManagedobject backed

Obiettivo
Voglio la sottoclasse NSManagedobject sostenuta per riflettere questi nuovi attributi.

Problema
L'unica soluzione che vedo sta per {Editor-> Crea NSManagedobject sottoclasse} in Xcode, ma in questo modo la priorità della classe.

Domanda
C'è un modo per aggiornare un'entità e la sottoclasse NSManagedobject sostenuto senza sostituire la classe.

risposta

8

La modifica della sottoclasse dell'oggetto gestito a mano va bene. Supponiamo che tu abbia aggiunto un nuovo attributo di stringa all'entità. Si potrebbe aggiungere una proprietà alla sottoclasse oggetto gestito:

@property (nonatomic, copy) NSString *myAttribute; 

e segnare come dinamica:

@dynamic myAttribute; 

Fatto! Avere generato Xcode dalla classe è inteso a fornire un punto di partenza . Non sta facendo nulla di super speciale per legare la tua proprietà a un attributo di entità.

+0

Awww ok capisco. Grazie. –

+4

Usa una categoria e sarai in grado di ricreare sottoclassi ogni volta che apporti modifiche all'editor senza influire sul comportamento prevalente nella tua categoria. – lostintranslation

3

Questo è un problema che si verifica sempre con i dati principali. Ovviamente potresti fare ciò che @quellish ha suggerito e apportare le modifiche nei file manualmente, ma un modo semplice per essere in grado di aggiungere un comportamento personalizzato alla tua classe NSManagedObject e inoltre conservare la capacità di generare automaticamente il file .m e .h di NSManagedObject è usa le categorie.

Di solito aggiungo tutto il comportamento personalizzato in una categoria come MyNSManagedObject (Management) e così ogni volta che aggiorno gli attributi nel modello, mi limito a rigenerare i file principali utilizzando l'editor del modello e tutto il mio codice personalizzato nella categoria rimane intatto.

+1

Facciamo una cosa simile. Scriviamo un file .extension che estende la sottoclasse e quindi aggiungiamo qualsiasi funzione o codice aggiuntivo in modo che l'override non costituisca un problema. – Unome

0

Si può fare questo:

scegliere "Crea NSManagedObject Sottoclasse ..." dal menu editor di Core Data eliminare e ricreare questo file di implementazione per il modello aggiornato.

Quindi si rimuoveranno i file già esistenti e ne verranno creati di nuovi. In realtà è il nostro amato Xcode IDE che suggerisce di farlo, come si può vedere dallo screenshot allegato. Screenshot

Problemi correlati