Il motivo per cui non sono stati visualizzati esempi simili all'entità RecipeIngredient
è che non sono necessarie entità comuni come quelle in Dati principali. Trattate i dati di base come se si trattasse di un database relazionale, in cui di solito utilizzate una tabella di join per creare relazioni efficienti molti-a-molti tra entità. Come spiegato nella sottosezione Many-to-Many Relationships dello Core Data Programming Guide, con Core Data tutto ciò che devi fare è specificare una relazione to-many in entrambe le direzioni tra due entità. Si noti l'osservazione parentesi nella documentazione:
(Se si dispone di un background in gestione di database e questo ti fa preoccupazione, non preoccupatevi: se si utilizza un negozio di SQLite, Core Data crea automaticamente aderire al intermedio . tavolo per voi)
Ecco un esempio del rapporto come si dovrebbe modellare, strappato direttamente dal editor di modello di Xcode:
Se desideri ancora vedere esempi su come eseguire questa operazione, cerca qualcosa come "Dati di base da molte a molte relazioni" e troverai molto. Potresti iniziare da qui su StackOverflow; una rapida ricerca ha trovato un certo numero di esempi, tra cui How do you manage and use "Many to many" core data relationships?.
Aggiornamento: Dal tuo commento, capisco che desideri utilizzare un oggetto intermedio per aggiungere informazioni sulla relazione tra ricette e ingredienti. Che è un caso in cui è giustificata un'altra entità. Quindi diciamo che il vostro modello è simile al seguente:
Sembra improbabile che ci si vuole prendere uno di questi oggetti RecipeIngredient
direttamente; probabilmente seguirai semplicemente la relazione appropriata. Quindi, potresti creare una richiesta di recupero per trovare tutte le ricette il cui nome corrisponde a "torta al cioccolato". (Ci sono un sacco di esempi di richieste di recupero usando un predicato nei documenti e in tutta la rete, quindi non lo farò qui.) La tua richiesta di recupero restituirà una serie di ricette che potremmo chiamare cakeRecipes
, ma tu sei probabilmente interessato solo a uno:
Recipe *cake = cakeRecipes.firstObject;
Ora, cosa vuoi sapere sugli ingredienti per la tua torta? Ecco un elenco degli ingredienti:
NSArray *ingredientNames = cake.ingredients.ingredient.name;
Se si desidera registrare i nomi degli ingredienti e gli importi:
for (RecipeIngredient *i in cake.ingredients) {
NSLog(@"%@ %@", i.amount, i.ingredient.name);
}
Oppure, si potrebbe utilizzare una richiesta per trovare gli ingredienti matching "sedano" fetch , memorizzando il risultato in celeries
.Dopo di che, si potrebbe cercare ricette, tra cui sedano:
Ingredient *celery = celeries.firstObject;
NSArray *recipes = celery.recipes.recipe
Se questo non aiuta, forse si potrebbe essere più preciso circa il problema. Inoltre, so che hai chiesto di Swift, ma le mie dita sono ancora abituate a Obj-C, e le specifiche del linguaggio non entrano realmente in gioco qui - Core Data funziona allo stesso modo in entrambe le lingue.
Che cosa è che non si capisce, e che si spera di impara da un esempio? –