Основные данные - Core Data

Основные данные
Основные данные
Разработчики)Apple Inc.
Стабильный выпуск
3.2.0
Операционная системаmacOS, iOS, tvOS, watchOS
ТипСистемная утилита
ЛицензияПроприетарный
Интернет сайтРуководство по программированию Apple Developer 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
  • Атрибуты доступа
  • «Строка» данных
  • -юридическое лицо
  • -valueForKey:
  • -setValue: forKey:
NSManagedObjectContext
  • Действия
  • Изменения
  • -executeFetchRequest: ошибка:
  • -спасти
NSManagedObjectModel
  • Структура
  • Место хранения
  • -логические объекты
  • -fetchRequestTemplateForName:
  • -setFetchRequestTemplate:
forName:
NSFetchRequest
  • Данные запроса
  • -setEntity:
  • -setPredicate:
  • -setFetchBatchSize:
NSPersistentStoreCoordinator
  • Посредник
  • Сохранение данных
  • -addPersistentStoreWithType:
конфигурация: URL:
варианты: ошибка:
  • -persistentStoreForURL:
NSPredicate
  • Укажите запрос
  • + predicateWithFormat:
  • -evaluateWithObject:

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

Форматы хранения

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.

Примечания

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

Рекомендации

внешняя ссылка