2012-06-05 7 views

risposta

4

Dal punto di vista CoreData, è in realtà non creare nuove tabelle, perché le tabelle del database sono solo un possibile tipo di negozio di persistenza associato con il modello di dati di base.

È tuttavia possibile creare nuove entità di dati di base utilizzando la classe NSEntityDescription. Nella documentazione di classe NSEntityDescription troverete questo:

Entity descriptions are editable until they are used by an object graph manager. This 
allows you to create or modify them dynamically. However, once a description is used 
(when the managed object model to which it belongs is associated with a persistent store 
coordinator), it must not (indeed cannot) be changed. This is enforced at runtime: any 
attempt to mutate a model or any of its sub-objects after the model is associated with a 
persistent store coordinator causes an exception to be thrown. If you need to modify a 
model that is in use, create a copy, modify the copy, and then discard the objects with 
the old model. 

Non ho mai provato a modificare uno in fase di esecuzione, quindi non so esattamente quanto bene questo funziona quando si dispone di un negozio di SQLite persistenza esistenti, se non del tutti. Ma probabilmente vale la pena giocare con NSEntityDescription per vedere se ti avvicina a quello che stai cercando di fare.

+0

Grazie a Tim, come paragone a molti framework iOS, il coredata è un po 'caotico per farmi abituare. – shebelaw

+0

Ben messo Tim ... –

+0

@shebelaw: È piuttosto complesso iniziare, ma se hai bisogno di un richiamo, ti consiglio i libri di Big Nerd Ranch. Mettono le cose in parole povere, non battono neanche loro. http://www.bignerdranch.com/books è probabilmente più economico ottenere i libri su Amazon come copie di seconda mano, ma vale comunque la pena dare un'occhiata. –

0

Generalmente il modello oggetto gestito viene creato graficamente utilizzando lo strumento di progettazione modello dati Xcode. (Se lo si desidera si può costruire il modello di programmazione in fase di esecuzione

Core Data programming Guide

+0

Non penso sia possibile. dove sei in grado di farlo prima? – shebelaw

+0

@Shanmugaraja G: Non è possibile modificare in modo programmatico i modelli dopo averli trascinati nell'archivio permanente. È comunque possibile modificare i modelli che non sono "bloccati" da un negozio. –

0

È possibile però:

  • creano un contesto Object Model (al di fuori di quello attuale ci si trova in/con)
  • Creare una o più entità
  • Creare un archivio persistente SEPARATO per quel modello
  • Salvare le entità ecc ...
  • chiudere il negozio quando hai finito

Non è possibile modificare i modelli al volo in quanto sono più o meno fisso quando sono tirato in l'ambiente di runtime.

Problemi correlati