Jump to content

Основные данные

Основные данные
Разработчик(и) 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 с этими изменениями.

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

Имя Использовать Ключевые методы
НСманажедобъект
  • Атрибуты доступа
  • «Ряд» данных
  • -сущность
  • -valueForKey:
  • -setValue: forKey:
НСманажедобжектконтекст
  • Действия
  • Изменения
  • -executeFetchRequest: ошибка:
  • -сохранять
НСманажедобжектмодель
  • Структура
  • Хранилище
  • -сущности
  • -fetchRequestTemplateForName:
  • -setFetchRequestTemplate:
дляИмя:
Нсфетчрекуест
  • Запросить данные
  • -setEntity:
  • -setPredicate:
  • -setFetchBatchSize:
Координатор NSPersistentStore
  • Посредник
  • Сохранение данных
  • -addPersistentStoreWithType:
конфигурация: URL-адрес:
варианты: ошибка:
  • -persistentStoreForURL:
НСПпредикат
  • Укажите запрос
  • +predicateWithFormat:
  • -оценитьСОбъектом:

[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. Недавно хранилище базовых данных для 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.

Примечания

[ редактировать ]
  1. ^ Apple, «Учебное пособие по основным данным для iPhone OS».
  2. ^ Jump up to: а б с Apple, «Руководство по программированию базовых данных».
  3. ^ Зарра, Основные данные .
  4. ^ Стивенсон, «Обзор основных классов данных»
  5. ^ Юревиц, «Работа с основными данными»
  6. ^ Jump up to: а б Github, «Среда Odbc»
  7. ^ Apple, «Руководство пользователя EOModeler»
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 3a806a680cfe04ab2ce86231cf5823eb__1697630040
URL1:https://arc.ask3.ru/arc/aa/3a/eb/3a806a680cfe04ab2ce86231cf5823eb.html
Заголовок, (Title) документа по адресу, URL1:
Core Data - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)