2015-03-13 24 views
6

Sono nuovo nello sviluppo di iOS e volevo sapere quale tipo di dati dovrei specificare per memorizzare più stringhe (array). L'app ha a che fare con il cibo e ho bisogno di conservare più ingredienti come un attributo.iOS Swift - Come archiviare array con Core Data?

Stavo pensando di rendere l'ingrediente come entità, ma voglio solo renderlo facile per un antipasto. Ho letto sul tipo trasformabile ma la gente non sembra raccomandare di usarlo per archiviare gli array.

risposta

11

Avviso: risposta approvata in anticipo.

Non è così.

Memorizzare le cose in un array non ti rende più facile. Al contrario, renderà le cose molto più difficili solo per un'ora. Immagina di voler mostrare tutte le Ricette che contengono un ingrediente selezionato. Non sarebbe facile con il tuo array di mod, con un modello corretto è solo una coppia di codice.

Si consiglia di utilizzare una buona vecchia relazione con un "Join-Entity".

basic Recipe data model

Sì, questo è più complicato di quanto l'hacking insieme qualcosa che funziona a malapena. Ma è il modo corretto.

+1

Grazie per il tuo suggerimento. Hai ragione. Dovrei farlo correttamente. –

+0

Puoi dirmi se ho bisogno di creare esplicitamente gli attributi di id della ricetta e id dell'ingrediente nell'entità joint? o xcode lo gestisce automaticamente se viene stabilita una relazione? –

+0

Vedo cosa intendi per l'ordinamento e la visualizzazione dei risultati di ricerca. Tuttavia, non ha ora bisogno di una serie di oggetti ingrediet personalizzati? La mia app ha bisogno di un array di stringhe (e non trarrebbe beneficio da un modello come sopra), e ancora non so come archiviare l'array. qualsiasi aiuto? – Japes

2

Quello che stavi pensando è esattamente quello che dovresti fare. I dati di base vengono creati per memorizzare i valori nella struttura di array. Dovresti creare entità Ingredienti e connettere l'entità Cibo (o qualsiasi altra cosa tu voglia chiamarla) in relazione con l'entità Ingredienti.

+0

Grazie :) Vado per il modo corretto. –

+0

ma dove conservare questi dati? – Martian2049

1

c'è un modo. Puoi fare ogni elemento manualmente, ad es. Tu hai il tuo array:

let employee: NSMutableArray = [] 

employee.addObject(["name":"Bill","LastName":"Hanks"]) 
employee.addObject(["name":"Rolex","LastName":"Swarzer"]) 
employee.addObject(["name":"Clive","LastName":"Martin"]) 
employee.addObject(["name":"Jimi","LastName":"Hendrix"]) 

Supponendo che avete creato il vostro CoreData con Entity "Dipendente" e attributi "nome" e "cognome" di effettuare le seguenti per aggiungerlo in ...

let appDel = UIApplication.sharedApplication().delegate as! AppDelegate 
let context = appDel.managedObjectContext 

for item in employee { 
    do { 
     let newUser = NSEntityDescription.insertNewObjectForEntityForName("Employee", inManagedObjectContext: context) 
     newUser.setValue(item["name"], forKey: "name") 
     newUser.setValue(item["LastName"], forKey: "lastname") 
     try context.save() 
    } catch { 
     //do nothing 
    } 

È quindi possibile recuperare tutti gli elementi utilizzando la richiesta di recupero o il controller dei risultati NSFetched