Основные данные - Core Data
Основные данные является граф объекта и структура настойчивости предоставленный яблоко в 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 в окно построителя интерфейса, чтобы создать графический интерфейс для их схемы. Тогда они могли бы написать стандартный Цель-C или же Быстрый код для чтения файлов vCard и помещения данных в управляемые объекты Core Data. С этого момента авторский код управляет этими объектами Core Data, а не лежащими в основе vCard. Подключение Сохранять
пункт меню к соответствующему методу в объекте контроллера направит контроллер на проверку стека объектов, определение того, какие объекты грязный, а затем заново запишите файл документа Core Data с этими изменениями.
Базовые данные организованы в большую иерархию классов, хотя взаимодействие преобладает только с небольшим их набором.
Имя | Использовать | Ключевые методы |
---|---|---|
NSManagedObject |
|
|
NSManagedObjectContext |
|
|
NSManagedObjectModel |
|
|
NSFetchRequest |
|
|
NSPersistentStoreCoordinator |
|
|
NSPredicate |
|
|
Форматы хранения
Core Data может сериализовать объекты в XML, двоичные или SQLite для хранения.[2] С выходом Mac OS X 10.5 Leopard, разработчики также могут создавать свои собственные атомный типы магазинов. Каждый метод имеет свои преимущества и недостатки, такие как удобочитаемость (XML) или более эффективное использование памяти (SQLite).
Эта часть Core Data похожа на исходную Платформа корпоративных объектов (EOF), в которой можно писать довольно сложные запросы. В отличие от EOF, невозможно написать свой собственный SQL, поскольку базовое хранилище может не основываться на SQL. Недавно Core Data store для ODBC стал доступен в Платформа ODBC. [6]
Схемы Core Data стандартизированы. Если у вас есть файл модели данных Xcode, вы можете свободно читать и записывать файлы в этом формате. Однако, в отличие от EOF, Core Data в настоящее время не предназначен для многопользовательского или одновременного доступа, если вы не используете среду ODBC.[6]
Миграция схемы также нетривиален, почти всегда требует кода. Если другие разработчики имеют доступ к вашей модели данных и зависят от нее, вам может потребоваться предоставить код перевода версии в дополнение к новой модели данных, если ваша схема изменится.
История и генезис
Core Data во многом обязан своим дизайном более раннему Следующий товар, Платформа корпоративных объектов (EOF).[7]
EOF был объектно-реляционное отображение для высокопроизводительных механизмов баз данных SQL, таких как Microsoft SQL Server и Oracle. EOF преследовал двоякую цель: во-первых, подключиться к ядру базы данных и скрыть детали реализации; во-вторых, для чтения данных из реляционного формата и преобразования их в набор объектов. Разработчики обычно взаимодействовали только с объектами, что упрощало разработку сложных программ за счет некоторой настройки для сопоставления данных с объектами. Объектная модель EOF была намеренно разработана для того, чтобы результирующие программы работали как документ; пользователь мог редактировать данные локально в памяти, а затем записывать все изменения с помощью одной команды «Сохранить».
На протяжении всей своей истории EOF содержал ряд битов полезного кода, которые иначе не были доступны в Следующий шаг /OpenStep. Например, EOF требовал возможности отслеживать, какие объекты были грязными, чтобы система могла позже их записать. Это было представлено разработчику не только как система, подобная документу, но и в форме неограниченного стека команд Undo, где каждая команда, применяемая к данным, представлена как отменяемое действие. Многие разработчики жаловались, что этот код управления состоянием слишком полезен, чтобы его можно было изолировать в EOF, и позже он был перемещен в Какао API при переходе к Mac OS X.
Первоначально не переводился сам EOF. EOF использовался в основном вместе с другим продуктом эпохи OpenStep, WebObjects, который был сервер приложений первоначально на основе Цель-C. В то время Apple занималась переносом WebObjects на Язык программирования Java, и как часть этого преобразования, EOF стало намного труднее использовать из Какао. И снова сторонние разработчики много жаловались.
Одна из важных реализаций заключается в том, что система управления состоянием объектов в EOF на самом деле не имеет ничего общего с реляционными базами данных. Тот же код мог и использовался разработчиками для управления графиками других объектов. В этой роли действительно полезными частями EOF были те, которые автоматически создавали наборы объектов из необработанных данных, а затем отслеживали их. Именно эта концепция лежит в основе Core Data.
Примечания
- ^ Apple, «Учебное пособие по основным данным для iPhone OS».
- ^ а б c Apple, «Руководство по программированию основных данных».
- ^ Зарра, Основные данные.
- ^ Стивенсон, "Обзор класса основных данных"
- ^ Юревиц, "Работа с основными данными"
- ^ а б Github, "Odbc framework"
- ^ 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/
- Github. «Фреймворк ODBC». https://github.com/mhakman/osx-cocoa-odbc
- ООО «МФлюент». «Просмотр основных файлов сохранения данных». https://github.com/yepher/CoreDataUtility
- Стивенсон, С. (2005). «Создайте приложение для работы с основными данными». Извлекаются из http://cocoadevcentral.com/articles/000085.php