Ho incontrato questa parola chiave in varie occasioni. Io so cosa si suppone di fare. Ma voglio davvero una migliore comprensione di ciò.Cosa fa @NSManaged?
Quello che ho notato su @NSManaged
- basata non sulla documentazione, ma l'uso ripetuto:
- Esso sostituisce magicamente codifica valore della chiave.
- E 'grosso modo equivalente a
@dynamic
in Objective-C (che non so molto circa) - ho bisogno di sottoclasse
PFObject
dalParse SDK
. Normalmente usa KVC per leggere/scrivere valori da/verso il back-end. - La prefissazione di qualsiasi variabile con
@NSManaged
interromperà il compilatore quando non si inizializza all'interno dell'inizializzatore.
La definizione formale (in Core Data di Apple Docs):
Core Data fornisce la storage sottostante e la realizzazione di immobili a sottoclassi della classe NSManagedObject. Aggiungere l'attributo @NSManaged prima di ogni definizione di proprietà nella sottoclasse dell'oggetto gestito che corrisponde a un attributo o una relazione nel modello di dati di base. Come l'attributo @dynamic in Objective-C, l'attributo @NSManaged informa il compilatore Swift che la memorizzazione e l'implementazione di una proprietà verranno fornite in fase di runtime. Tuttavia, a differenza di @dynamic, l'attributo @NSManaged è disponibile solo per il supporto dei dati principali.
Che cosa ho ottenuto da questo:
variabili con
@NSManaged
sono esenti da controlli in fase di compilazione per qualcosa.
Ho letto la documentazione formale e vari altri SO domande riguardo a questa questione:
@synthesize vs @dynamic, what are the differences?
What is common case for @dynamic usage?
istintivamente riconoscere alcuni scenari in cui dovrei usarlo. I parzialmente so cosa fa. Ma quello che cerco è una comprensione più pura di ciò che fa.
Ulteriori osservazioni:
A PFObject
nel Parse SDK
si basa su Key Value Coding
per accedere ai relativi valori.Il PFObject
fornisce le seguenti funzioni di accesso:
objectForKey:
let score = results.objectForKey("descriptionOfResult")
//returns the descriptionOfResult value from the results object
setObject:forKey:
results.setObject("The results for a physics exam", forKey: "descriptionOfResult")
//sets the value of descriptionOfResult
Per la mia comprensione, @NSManaged
magicamente capisce che la variabile ho dichiarato automaticamente utilizza le funzioni di accesso di cui sopra per get
e set
. Mi piacerebbe sapere come funziona (se quello che capisco è vero), e qualsiasi altra cosa faccia.
Hai mai scoperto come è stato raggiunto il comportamento osservato (in Ulteriori osservazioni)? In che modo @NSManaged utilizza gli accessor corretti? – Jason
l'attributo @NSManaged è disponibile solo per il supporto di Core Data non completamente corretto. Devi anche usarlo per le variabili rapide di CoreAnimation che vuoi animare su: http://stackoverflow.com/questions/24150243/are-needsdisplayforkey-actionforkey-overrides-working-correctly – ambientlight