Основные данные
![]() | |
Разработчик(и) | Apple Инк. |
---|---|
Стабильная версия | 3.2.0 |
Операционная система | macOS , iOS , tvOS , watchOS |
Тип | Системная утилита |
Лицензия | Собственный |
Веб-сайт | Руководство по программированию Apple Developer Core Data |
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]
Точно так же, как Cocoa Bindings выполняет многие обязанности контроллера в конструкции модель-представление-контроллер , Core Data выполняет многие обязанности модели данных. Помимо других задач, он отвечает за управление изменениями, сериализацию на диск, минимизацию объема памяти и запросы к данным.
Использование
[ редактировать ]Базовые данные описывают данные с помощью модели данных высокого уровня, выраженной в терминах сущностей и их отношений, а также запросов на выборку, которые извлекают сущности, соответствующие определенным критериям. Код может извлекать эти данные и манипулировать ими на чисто объектном уровне, не беспокоясь о деталях хранения и извлечения. Объекты контроллера, доступные в Interface Builder, могут напрямую извлекать эти объекты и манипулировать ими. В сочетании с привязками Cocoa пользовательский интерфейс может отображать многие компоненты модели данных без необходимости использования фонового кода.
Например: разработчик может писать программу для обработки vCards . Чтобы управлять ими, автор намеревается считывать vCard в объекты, а затем сохранять их в одном XML-файле большего размера. Используя Core Data, разработчик перетаскивал свою схему из дизайнера данных в Xcode в окно построителя интерфейса, чтобы создать графический интерфейс для своей схемы. Затем они могли бы написать стандартный код Objective-C или Swift для чтения файлов vCard и помещения данных в управляемые объекты Core Data. С этого момента код автора манипулирует этими объектами Core Data, а не базовыми vCard. Подключение Save
Пункт меню для соответствующего метода в объекте контроллера предписывает контроллеру проверить стек объектов, определить, какие объекты являются «грязными» , а затем перезаписать файл документа Core Data с этими изменениями.
Базовые данные организованы в большую иерархию классов, хотя взаимодействие преобладает только с небольшим их набором.
Имя | Использовать | Ключевые методы |
---|---|---|
НСманажедобъект |
|
|
НСманажедобжектконтекст |
|
|
НСманажедобжектмодель |
|
|
Нсфетчрекуест |
|
|
Координатор NSPersistentStore |
|
|
НСПпредикат |
|
|
Форматы хранения
[ редактировать ]Core Data может сериализовать объекты в XML, двоичный формат или SQLite для хранения. [2] С выпуском Mac OS X 10.5 Leopard разработчики также могут создавать свои собственные типы атомарных хранилищ. Каждый метод имеет свои преимущества и недостатки, например, удобочитаемость (XML) или более эффективное использование памяти (SQLite).
Эта часть Core Data похожа на исходную систему Enterprise Objects Framework (EOF) в том смысле, что можно писать довольно сложные запросы. В отличие от EOF, невозможно написать собственный SQL, поскольку базовое хранилище может не основываться на SQL. Недавно хранилище базовых данных для ODBC стало доступным в рамках ODBC . [6]
Схемы основных данных стандартизированы. Если у вас есть файл модели данных 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 требовалась возможность отслеживать, какие объекты были грязными, чтобы система могла позже их записать. Это было представлено разработчику не только как система, подобная документу, но и в виде неограниченного стека команд отмены, где каждая команда, применяемая к данным, представлена как отменяемое действие. Многие разработчики жаловались, что этот код управления состоянием слишком полезен, чтобы его можно было изолировать в EOF, и позже он был перенесен в Cocoa API при переходе на Mac OS X.
Изначально не был переведен сам EOF. EOF использовался в основном вместе с другим продуктом эпохи OpenStep, WebObjects , который представлял собой сервер приложений, изначально основанный на Objective-C . В то время Apple находилась в процессе портирования WebObjects на язык программирования Java , и в рамках этого преобразования EOF стало гораздо сложнее использовать из Cocoa. И снова сторонние разработчики жаловались.
Одним из важнейших моментов является то, что система управления состоянием объектов в EOF на самом деле не имеет ничего общего с реляционными базами данных. Тот же код мог использоваться и использовался разработчиками для управления графиками других объектов. В этой роли действительно полезными частями EOF были те, которые автоматически создавали наборы объектов из необработанных данных и затем отслеживали их. Именно эта концепция лежит в основе Core Data.
Примечания
[ редактировать ]- ^ Apple, «Учебное пособие по основным данным для iPhone OS».
- ^ Jump up to: а б с Apple, «Руководство по программированию базовых данных».
- ^ Зарра, Основные данные .
- ^ Стивенсон, «Обзор основных классов данных»
- ^ Юревиц, «Работа с основными данными»
- ^ Jump up to: а б Github, «Среда Odbc»
- ^ 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.
- Зарра, М.С. (2009). Core Data API 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.
- КакаоДев. (без даты). Получено с https://web.archive.org/web/20080801025517/http://www.cocoadev.com/.
- Гитхаб. «Одбс-фреймворк». https://github.com/mhakman/osx-cocoa-odbc
- ООО «МФлюент». «Просмотр основных файлов сохранения данных». https://github.com/yepher/CoreDataUtility
- Стивенсон, С. (2005). «Создание основного приложения для обработки данных». Получено с http://cocoadevcentral.com/articles/000085.php.