Dopo aver appreso delle relazioni traentità in Core Data. Non vedo la vera ragione per impostare la relazione tra due entità: possono essere collegate separatamente se una delle entità contiene una proprietà che può contenere un'altra entità avendo una proprietà di tipo NSManagedObject
.
@property (nonatomic, strong ) NSManagedObject *AssetType;
risposte:
2 per risposta № 1Questo è un concetto che devi capire: Core Data non è un database ma è un graph manager di oggetti e, come seconda funzionalità, offre la persistenza (ad es utilizzando, ad esempio, un negozio Sqlite).
Detto questo, se hai due entità separate eè necessario recuperare i valori in base alle condizioni che appartengono all'altra entità, è necessario eseguire due richieste e filtrare i risultati in memoria. Al contrario, se imposti una relazione, puoi semplicemente creare una richiesta con un predicato specifico e lasciare che i dati di base recuperino i risultati corretti per te. Inoltre, attraverso le relazioni è possibile accedere agli oggetti che appartengono a un'altra entità semplicemente come accedere a un oggetto proprietà. Ad esempio, il seguente snippet dice che basato su entityA
Posso accedere a chiamate di proprietà someRelationship
che consente di recuperare una (o più) entità di tipo EntityB
. Se someRelationship
è stato impostato per: molti ne riceverai uno o più EntityB
entità.
entityB = entityA.someRelationship;
Il vero consiglio è pensare in termini di grafico degli oggetti!!!
Ulteriore riferimento: Panoramica dei dati principali di objc.io.
Aggiornamento 1
L'altro grande vantaggio è che le relazioni ti permettono di trarre vantaggio dalle regole di cancellazione e, attraverso relazioni inverse, sei in grado di mantenere l'integrità del tuo grafico.
Vedere Relazioni e proprietà recuperate.