Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Core Data - это объектный граф и структура сохраняемости, предоставляемая Apple в операционных системах macOS и iOS . Он был представлен в Mac OS X 10.4 Tiger и iOS с iPhone SDK 3.0. [1] Это позволяет получать данные , организованные модели реляционной сущность-атрибут будет сериализовать в XML , двоичном или SQLite магазинах. Данными можно манипулировать с помощью объектов более высокого уровня, представляющих сущности и их отношения. Core Data управляет сериализованной версией, обеспечиваяЖизненный цикл объекта и график объекта управления, в том числе персистенции . Core Data взаимодействует напрямую с SQLite , изолируя разработчика от базового SQL . [2]

Подобно тому, как привязки какао выполняют многие обязанности контроллера в дизайне модель – представление – контроллер , Core Data выполняет многие функции модели данных. Среди других задач он обрабатывает управление изменениями, сериализацию на диск, минимизацию объема памяти и запросы к данным.

Использование [ править ]

Core Data описывает данные с помощью модели данных высокого уровня, выраженной в терминах сущностей и их отношений, а также запросов на выборку, которые извлекают сущности, удовлетворяющие определенным критериям. Код может извлекать эти данные и манипулировать ими на чисто объектном уровне, не беспокоясь о деталях хранения и извлечения. Объекты контроллера, доступные в Интерфейсном Разработчике, могут извлекать и управлять этими объектами напрямую. В сочетании с привязками какао пользовательский интерфейс может отображать многие компоненты модели данных без необходимости фонового кода.

Например: разработчик может писать программу для работы с vCard . Чтобы управлять ими, автор намеревается преобразовать визитные карточки в объекты, а затем сохранить их в одном более крупном XML-файле. Используя Core Data, разработчик перетаскивал свою схему из конструктора данных в Xcode в окно построителя интерфейса, чтобы создать графический интерфейс для своей схемы. Затем они могли написать стандартный код Objective-C или Swift для чтения файлов vCard и помещения данных в управляемые объекты Core Data. С этого момента авторский код управляет этими объектами Core Data, а не лежащими в основе vCard. ПодключениеSaveПункт меню для соответствующего метода в объекте контроллера направит контроллер на проверку стека объектов, определение того, какие объекты загрязнены , а затем перезапишет файл документа Core Data с этими изменениями.

Базовые данные организованы в большую иерархию классов, хотя взаимодействие преобладает только с небольшим их набором.

[3] [2] [4] [5]

Форматы хранения [ править ]

Core Data может сериализовать объекты в XML, двоичный код или SQLite для хранения. [2] С выпуском Mac OS X 10.5 Leopard разработчики также могут создавать свои собственные атомарные типы хранилищ. Каждый метод имеет свои преимущества и недостатки, такие как удобочитаемость (XML) или более эффективное использование памяти (SQLite).

Эта часть Core Data похожа на исходную систему Enterprise Objects Framework (EOF) в том, что можно писать довольно сложные запросы. В отличие от EOF, невозможно написать собственный SQL, поскольку базовое хранилище может не быть основано на SQL. Недавно хранилище Core Data для ODBC стало доступным в среде ODBC . [6]

Схемы Core Data стандартизированы. Если у вас есть файл модели данных Xcode, вы можете свободно читать и записывать файлы в этом формате. Однако, в отличие от EOF, Core Data в настоящее время не предназначен для многопользовательского или одновременного доступа, если вы не используете среду ODBC. [6]

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

История и происхождение [ править ]

Core Data во многом обязан своим дизайном более раннему продукту NeXT , Enterprise Objects Framework (EOF). [7]

EOF был объектно-реляционным отображением для высокопроизводительных механизмов баз данных SQL, таких как Microsoft SQL Server и Oracle . EOF преследовал двоякую цель: во-первых, подключиться к ядру базы данных и скрыть детали реализации; во-вторых, считывать данные из реляционного формата и преобразовывать их в набор объектов. Разработчики обычно взаимодействуют только с объектами, что упрощает разработку сложных программ за счет некоторой настройки для сопоставления данных с объектами. Объектная модель EOF была специально разработана для того, чтобы результирующие программы работали как документ; пользователь мог редактировать данные локально в памяти, а затем записывать все изменения с помощью одной команды «Сохранить».

На протяжении всей своей истории EOF содержал ряд битов полезного кода, которые иначе не были доступны в NeXTSTEP / OpenStep . Например, EOF требовал возможности отслеживать, какие объекты были грязными, чтобы система могла позже их записать. Это было представлено разработчику не только как система, подобная документам, но и в форме неограниченного стека команд Undo, где каждая команда, применяемая к данным, представлена ​​как отменяемое действие. Многие разработчики жаловались , что это код состояния управления было слишком полезно выделить в EOF, а затем она была перенесена в API Cocoa при переходе на Mac OS X .

Первоначально не переводился сам EOF. EOF использовался в основном вместе с другим продуктом эпохи OpenStep, WebObjects , который был сервером приложений, изначально основанным на Objective-C . В то время Apple занималась портированием WebObjects на язык программирования Java , и в рамках этого преобразования EOF стало намного сложнее использовать из Cocoa. И снова сторонние разработчики жаловались.

Одна из важных реализаций заключается в том, что система управления состоянием объектов в EOF на самом деле не имеет ничего общего с реляционными базами данных. Тот же код мог и использовался разработчиками для управления графами других объектов. В этой роли действительно полезными частями EOF были те, которые автоматически создавали наборы объектов из необработанных данных, а затем отслеживали их. Именно эта концепция лежит в основе Core Data.

Заметки [ править ]

  1. ^ Apple, «Учебное пособие по основным данным для iPhone OS».
  2. ^ a b c Apple, «Руководство по программированию основных данных».
  3. ^ Зарра, Основные данные .
  4. ^ Стивенсон, "Обзор класса основных данных"
  5. ^ Юревиц, "Работа с основными данными"
  6. ^ a b Github, "Odbc framework"
  7. ^ Apple, "Руководство пользователя EOModeler"

Ссылки [ править ]

  • Apple Inc. (17 сентября 2009 г.). «Руководство по программированию основных данных». Получено с https://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html.
  • Apple Inc. (9 сентября 2009 г.). «Учебное пособие по основным данным для iPhone OS». Получено с https://developer.apple.com/iphone/library/documentation/DataManagement/Conceptual/iPhoneCoreData01/Introduction/Introduction.html.
  • Apple Inc. (2006 г.). «Руководство пользователя EOModeler». Получено с https://developer.apple.com/legacy/mac/library/documentation/WebObjects/UsingEOModeler/Introduction/Introduction.html#//apple_ref/doc/uid/TP30001018-CH201-TP1.
  • Юревиц, М. и Apple Inc. (2010). «Видео разработчиков для iPhone: работа с основными данными». Получено с https://developer.apple.com/videos/iphone/#video-advanced-coredata.
  • Стивенсон, С. (2005). «Обзор базового класса данных». Получено с http://cocoadevcentral.com/articles/000086.php
  • Зарра, MS (2009). API Core Data Apple, для сохраняющихся данных на Mac OS X . Прагматичные программисты.
  • Ламарш, Дж., И Марк, Д. (2009). Подробнее Разработка iPhone 3: решение iPhone SDK 3 . Апресс.

Внешние ссылки [ править ]

  • Apple Inc. (2018). «Основные данные». Получено с https://developer.apple.com/documentation/coredata.
  • Apple Inc. (2009 г.). «Учебник по веб-объектам». Получено с https://developer.apple.com/legacy/mac/library/documentation/DeveloperTools/Conceptual/WOTutorial/Introduction/Introduction.html.
  • CocoaDev. (nd). Получено с https://web.archive.org/web/20080801025517/http://www.cocoadev.com/
  • Github. «Фреймворк ODBC». https://github.com/mhakman/osx-cocoa-odbc
  • ООО «МФлюент». «Просмотр основных файлов сохранения данных». https://github.com/yepher/CoreDataUtility
  • Стивенсон, С. (2005). «Создайте приложение для работы с основными данными». Получено с http://cocoadevcentral.com/articles/000085.php