2013-07-19 11 views
17

Quando ho creato un oggetto CoreData con relazioni uno-a-molti, ottengo alcuni metodi (CoreDataGeneratedAccessors). Abbiamo bisogno di implementare questi metodi? I metodi generati automaticamente sono i seguenti:Cosa sono CoreDataGeneratedAccessors?

- (void)addCirqitsObject:(Cirqit *)value; 
- (void)removeCirqitsObject:(Cirqit *)value; 
- (void)addCirqits:(NSSet *)value; 
- (void)removeCirqits:(NSSet *)value; 
+5

No, non hanno bisogno per la loro attuazione. Saranno analizzati da CoreData stesso e gestiti in modo appropriato. Assicurati solo di non toccarli (anche le semplici modifiche come rimuovere la "s" da Cirquits le romperà). – borrrden

+0

in alcuni progetti ho visto che, sono fatte alcune implementazioni. quale sarà la ragione? –

+0

Gli accessor per set ordinati non funzionano (o non li ho mantenuti), quindi i progetti li sovrascrivono. Discusso [qui] (http://stackoverflow.com/questions/7385439/exception-thrown-in-nsorderedset-generated-accessors). –

risposta

9

Non è necessario implementare questi metodi, ma è possibile. Nel caso in cui non lo fai, CoreData li genererà dinamicamente per te.

Se si desidera sovrascrivere l'implementazione predefinita, leggere lo Core Data Programming Guide (Custom To-Many Relationship Accessor Methods) per trovare un'implementazione di esempio.

Un motivo per sovrascrivere potrebbe essere quello di attivare calcoli o aggiornamenti aggiuntivi prima o dopo l'aggiunta o la rimozione di nuovi oggetti Cirqit. Ricorda però di non modificare il codice di implementazione di esempio, ma aggiungi il tuo codice personalizzato, altrimenti potresti interrompere la gestione delle relazioni.

+3

Puoi rispondere "Cosa sono CoreDataGeneratedAccessors?" In questo momento la risposta descrive semplicemente se implementarli. – kgaidis

0

È possibile eseguire l'override degli accessori di dati generati. Devi prestare attenzione ad alcune cose speciali, come chiamare willChangeValueForKey e doneChangeValueForKey, ma a parte questo ignorare gli accessor è praticamente lo stesso di sempre.

di cortesia: - https://stackoverflow.com/a/9659750/1865424

penso che questi collegamenti possono aiutare a ..

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdAccessorMethods.html