Core Data

редактировать

Core Data
Основные данные
Разработчик (и) Apple Inc.
Стабильная версия 3.2.0
Операционная система macOS, iOS, tvOS, watchOS
Тип Системная утилита
Лицензия Собственная
Веб-сайтApple Developer Core Data Programming Guide

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

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

Содержание
  • 1 Использование
  • 2 Форматы хранения
  • 3 История и происхождение
  • 4 Примечания
  • 5 Ссылки
  • 6 Внешние ссылки
Использование

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

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

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

NameИспользуйтеметоды ключа
NSManagedObject
  • Атрибуты доступа
  • «строка» данных
  • -entity
  • -valueForKey:
  • -setValue: forKey:
NSManagedObjectContext
  • Actions
  • Changes
  • -executeFetchRequest:error:
  • -save
NSManagedObjectModel
  • Структура
  • Хранилище
  • -объектов
  • -fetchRequestTemplateForName:
  • -setFetchRequestTemplate:
forName:
NSFetchRequest
  • Запросить данные
  • -setEntity:
  • -setPredicate:
  • -setFetchBatchSize:
NSPersistentStoreCoordinator
  • Mediator
  • Сохранение данных
  • -addPersistentStoreWithType:
конфигурация: URL:
параметры: ошибка:
  • -persistentStoreForURL:
NSPredicate
  • Укажите запрос
  • + predicateWithFormat:
  • -evaluateWithObject:
Форматы хранения

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

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

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

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

История и происхождение

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

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.

Примечания
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-15 12:21:29
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте