Основной объект данных не существует в библиотеке какао в Xcode 6.2. Вместо этого вы можете использовать ArrayController
.
1) Создайте новый проект в Xcode: введите имя проекта и отметьте поле с надписью Core Data
.
2) В файлах вашего проекта выберите файл .xcdatamodeld и в настройке компоновщика интерфейса an entity
, который похож на класс Cocoa с некоторыми @properties:

Нажмите Add Entity
внизу окна. На изображении выше сущность называется Book. Эта строка сначала будет содержать Entity
вместо Book
. Дважды щелкните Entity
и введите Book
.
Нажмите +
в области атрибутов, чтобы добавить атрибуты и их типы. В крайнем правом углу (с самым правым значком, выбранным вверху) вы можете включить или отключить другие свойства для атрибута, например, снимите флажок необязательно .
Насколько я могу судить, настройка сущности аналогична созданию класса Objective-C с набором @ properties.
3) Выберите MainMenu.xib и перетащите TableView (сделайте его основанным на ячейке) и пару квадратных кнопок в окно:

Для кнопок в инспекторе атрибутов рядом с изображением выберите NSAddTemplate и NSRemoveTemplate соответственно. В TableView дважды щелкните заголовки столбцов и введите имена столбцов.
Как только вы настроите вид, перетащите ArrayController из библиотеки в док-станцию. В Identity Inspector измените значение параметра Label
для ArrayController на BookController, как показано на рисунке выше. Метка позволяет вам ссылаться на этот конкретный ArrayController, что удобно, если в вашем xib-файле есть несколько ArrayController.
4) Затем в инспекторе атрибутов укажите сущность или тип объекта, который ArrayController будет хранить и управлять:

Также проверьте Prepares Content
. Это приведет к загрузке сохраненных на диск данных в TableView при запуске TableView.
5) С выбранным ArrayController перейдите в Инспектор привязок и в разделе Parameters
привяжите ArrayController к AppDelegate
и для ключевого пути введите managedObjectContext
. УправляемыйObjectContext отвечает за запись данных на диск:

6) Затем свяжите столбцы TableView с ArrayController. Убедитесь, что вы выбрали столбец Book Title
:

В инспекторе привязок в привязке значения привязайте к BookController
(метка, присвоенная ArrayController). Ключ контроллера arrangedObjects
- это отсортированный массив всех объектов в ArrayController. И, указав ключевой путь для модели как title
, вы указываете столбцу отображать заголовок каждого объекта вранжированный объект.
Выберите столбец Author в NSTableView и настройте привязку аналогичным образом.
7) Выберите квадратную кнопку +
и Ctrl + перетащите с кнопки на ArrayController. После освобождения выберите add:
во всплывающем меню. Затем выберите квадратную кнопку -
и Ctrl + перетащите с кнопки на ArrayController. После освобождения выберите remove:
во всплывающем меню.
Наконец, установите привязку для квадратной кнопки -
, которая отключит кнопку, если в TableView нет элементов, которые нужно удалить:

Запустите приложение и используйте кнопку +
, чтобы вставить записи в TableView. Я замечаю, что если я остановлю приложение с помощью кнопки Xcode Stop
, данные, введенные в TableView, не сохранятся на диск. Вместо этого я должен выбрать «Выход» под именем приложения в строке меню, чтобы сохранить данные на диск.