2012-06-05 2 views

ответ

4

С точки зрения CoreData, вы на самом деле не создавать новые таблицы, так как таблицы базы данных только один возможный тип постоянного хранилища, связанные с моделью данных ядра.

Вы можете, однако, создавать новые основные объекты данных программно, используя класс NSEntityDescription. В документации класса NSEntityDescription вы найдете это:

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. 

Я никогда не пытался изменить один во время выполнения, так что я не знаю точно, как хорошо это работает, когда у вас есть существующий SQLite сохраняемости магазин, если все. Но, вероятно, стоит поиграть с NSEntityDescription, чтобы узнать, приближается ли она к тому, что вы пытаетесь сделать.

+0

Спасибо Тиму, по сравнению со многими из iOS-фреймворков, coredata немного беспокойно для меня, чтобы привыкнуть. – shebelaw

+0

Хорошо поставил Тим ... –

+0

@shebelaw: Сложно начинать с, но если вам нужен бустер, я бы рекомендовал книги Big Nerd Ranch. Они вкладывают вещи в неспециалистские термины, они тоже не бьют вокруг куста. http://www.bignerdranch.com/books, вероятно, дешевле получить книги на Amazon в качестве копий второй руки, но все же стоит посмотреть. –

0

Вы обычно создаете модель управляемых объектов графически, используя инструмент проектирования модели данных Xcode. (При желании вы можете построить модель программно во время выполнения

Core Data programming Guide

+0

Я не думаю, что это возможно. где вы можете это сделать раньше? – shebelaw

+0

@Shanmugaraja G: Вы не можете программно менять модели, как только они были втянуты через постоянный магазин. Однако вы можете изменить модели, которые не блокируются магазином. –

0

Вы можете однако:

  • Создание объектной модели контекста (за пределами текущего вы в/с помощью)
  • Создайте одно или несколько объектов
  • Создайте ОТДЕЛЬНОЕ постоянное хранилище для этой модели
  • Сохраните объекты и т. Д.
  • Закройте магазин, когда вы сделали

Вы не можете изменить модели на лету, поскольку они в значительной степени фиксируется, когда они втянуты в среде выполнения.

Смежные вопросы