Создание схемы базы данных путем сохранения записей

Во время разработки просто создать схему с помощью CloudKit APIs. При сохранении рекордных объектов к базе данных связанные типы записи и их атрибуты автоматически создаются для Вас. Эту функцию вызывают своевременной схемой и доступна только при использовании среды разработки, которая не является доступно приложениями, проданными на хранилище. Например, во время разработки можно заполнить базу данных CloudKit с тестовыми записями, сохраненными в списке свойств.

Эта глава представляет некоторый CloudKit APIs и содержит фрагменты кода. Добавить #import <CloudKit/CloudKit.h> наверху каждого файла реализации, использующего классы CloudKit и методы. Считайте Ссылку Платформы CloudKit для подробных данных о CloudKit APIs.

О разработке Вашей схемы

Разработайте схему CloudKit для хранения частей объектной модели приложения, которую Вы хотите сохранить. При реализации приложения с нуля используйте шаблон разработки Контроллера представления Модели для разделения ракурсов пользовательского интерфейса от объектов модели. Тогда разработайте схему, эффективно хранящую части объектной модели, которую Вы хотите сохранить в iCloud.

Разделите данные на типы записи

Схема CloudKit состоит из одной или более типов записи, имеющих имя, атрибуты и другие метаданные. Типы атрибута подобны допустимым типам списка свойств с некоторыми дополнениями. Используйте специализированное Asset введите для объемных данных, хранящихся отдельно от записей, a Location введите для того, чтобы эффективно запросить географические координаты и a Reference введите для представления непосредственных и связей «один ко многим» среди записей. Максимальный размер записи составляет 1 МБ, так используйте Asset введите (не Bytes введите) для больших данных.

Таблица показывает возможные типы атрибута и их эквивалентные классы.

Тип атрибута

Класс

Описание

Актив

CKAsset

Большой файл, который связан с записью, но сохранен отдельно

Байты

NSData

Обертка для буферов байта, которая сохранена записью

Дата/Время

NSDate

Единственный момент времени

Дважды

NSNumber

Двойное

Интервал (64)

NSNumber

Целое число

Расположение

CLLocation

Географическая координата и высота

Ссылка

CKReference

Отношение от одного объекта до другого

Строка

NSString

Неизменная текстовая строка

Список

NSArray

Массивы любого из вышеупомянутых типов атрибута

Разработайте типы записи с помощью этих атрибутов, чтобы хранить персистентные данные приложения. Например, этот эскиз основной подробности экраны интерфейса пользователя набор заголовков иллюстраций в основном интерфейсе (столбец слева) и свойства выбранной иллюстрации в подробном интерфейсе (область справа). Модель основного объекта состоит из Artwork и Artist класс, где Artwork имеет к - одно отношение к Artist.

../Art/masterdetail_sketch_2x.png

Существует непосредственное отображение между объектами в этой объектной модели и типах записи Artwork и Artist. artist атрибут Artwork типом записи является Ссылочный тип со ссылкой на Artist запись. image атрибут Asset введите содержащий URL, и location атрибут является a Location введите со свойствами широты и долготой. Все другие атрибуты в Artwork и Artist типы Даты и простая строка.

../Art/schema_design_2x.png

Выберите имена для своих записей

Выберите эвристику для создания уникальных имен для Ваших записей. Рекордное имя вместе с рекордной зоной (раздел базы данных) является идентификатором записи, представляющим расположение записи в базе данных. Рекордное имя может быть внешним ключом, используемым другим источником данных или комбинацией строк, делающей его уникальным в рекордной зоне. Например, рекордное имя Artwork запись может объединить имя и фамилию художника с числом каталога, как в строке 115 Chen, Mei. При создании использования записей Инструментальная панель CloudKit уникальный идентификатор автоматически присваивается записи.

Создайте записи

Сначала создайте идентификатор записи, экземпляр CKRecordID класс, указывая рекордное имя и рекордную зону. Тогда создайте запись, экземпляр CKRecord класс, передавая идентификатор записи. Установите атрибуты записи с помощью методов стиля кодирования значения ключа.

Создать запись

  1. Создайте рекордный ID, указывающий уникальное рекордное имя.

    CKRecordID *artworkRecordID = [[CKRecordID alloc] initWithRecordName:@"115"];
  2. Создайте рекордный объект.

    CKRecord *artworkRecord = [[CKRecord alloc] initWithRecordType:@"Artwork" recordID:artworkRecordID];
  3. Установите атрибуты записи.

    artworkRecord[@"title" ] = @"MacKerricher State Park";
    artworkRecord[@"artist"] = @"Mei Chen";
    artworkRecord[@"address"] = @"Fort Bragg, CA";

Сохраните записи

Сначала выберите базу данных, где Вы сохраните записи (общедоступный, частный, или пользовательский) и затем сохраните запись. Если тип записи не существует для записи, он создается для Вас.

Сохранить запись

  1. Получите базу данных в контейнере своего приложения по умолчанию.

    Получить общедоступную базу данных:

    CKContainer *myContainer = [CKContainer defaultContainer];
    CKDatabase *publicDatabase = [myContainer publicCloudDatabase];

    Получить частную базу данных:

    CKContainer *myContainer = [CKContainer defaultContainer];
    CKDatabase *privateDatabase = [myContainer privateCloudDatabase];

    Получить пользовательский контейнер:

    CKContainer *myContainer = [CKContainer containerWithIdentifier:@"iCloud.com.example.ajohnson.GalleryShared"];

    Для создания пользовательского контейнера, совместно использованного многократными приложениями, считайте Контейнеры Доли Между Приложениями.

  2. Сохраните запись.

    [publicDatabase saveRecord:artworkRecord completionHandler:^(CKRecord *artworkRecord, NSError *error){
       if (!error) {
          // Insert successfully saved record code
       }
       else {
          // Insert error handling
        }
    }];

    Если тип записи не существует, платформа CloudKit создает его с атрибутами, которые Вы устанавливаете.

Прежде, чем щелкнуть по Кнопке запуска в XCode, введите учетные данные iCloud в устройство, как описано в следующем разделе.

Введите Учетные данные iCloud прежде, чем Выполнить Ваше Приложение

В производстве полномочия по умолчанию позволяют неаутентифицируемым пользователям читать записи в общедоступной базе данных, но не позволяют им писать записи. Поэтому, прежде чем Вы выполняете свое приложение и сохраняете записи на базу данных, введите учетную запись iCloud в Настройки на iOS или Установки системы на Mac. Также включите Диск iCloud. Позже, запишите необходимую обработку ошибок для представления диалогового окна пользователю, когда учетные данные iCloud будут необходимы, как описано на Предупреждении Пользователь для Ввода Учетных данных iCloud.

В разработке при выполнении приложения через XCode на Средстве моделирования iOS или устройстве на iOS также необходимо ввести учетные данные iCloud для чтения записей в общедоступной базе данных.

Для выполнения приложения в Средстве моделирования iOS введите учетные данные iCloud в Средство моделирования iOS, прежде чем Вы выберете средство моделирования и щелкнете по Кнопке запуска в XCode. Необходимо выполнить эти шаги для каждого Средства моделирования iOS, которое Вы выбираете во всплывающем меню Схемы в XCode.

Ввести учетные данные iCloud в Средство моделирования iOS

  1. Выберите Xcode> Open Developer Tool> Средство моделирования iOS.

  2. В Средстве моделирования iOS выберите Hardware> Home.

  3. Запустите приложение Настроек и щелкните по iCloud.

    ../Art/3_icloud_settings_2x.png
  4. Введите Apple ID и пароль.

  5. Нажмите входят в систему.

    Ожидайте, в то время как iOS проверяет счет iCloud.

  6. Для включения Диска iCloud щелкните по переключателю Drive iCloud.

    Если переключатель не появляется, Диск iCloud уже включен.

Поскольку, как создать учетную запись iCloud, читайте, Создают Счет iCloud на Разработку.

Предупредите Пользователя для Ввода Учетных данных iCloud

Прежде, чем сохранить записи, проверьте, что пользователь регистрируется в их учетную запись iCloud. Если пользователь не регистрируется, представьте предупреждение, сообщающее пользователю, как ввести их учетные данные iCloud и включить Диск iCloud.

[[CKContainer defaultContainer] accountStatusWithCompletionHandler:^(CKAccountStatus accountStatus, NSError *error) {
    if (accountStatus == CKAccountStatusNoAccount) {
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Sign in to iCloud"
                                                                       message:@"Sign in to your iCloud account to write records. On the Home screen, launch Settings, tap iCloud, and enter your Apple ID. Turn iCloud Drive on. If you don't have an iCloud account, tap Create a new Apple ID."
                                                                preferredStyle:UIAlertControllerStyleAlert];
        [alert addAction:[UIAlertAction actionWithTitle:@"Okay"
                                                  style:UIAlertActionStyleCancel
                                                handler:nil]];
        [self presentViewController:alert animated:YES completion:nil];
    }
    else {
        // Insert your just-in-time schema code here
    }
}];

Для приобретения знаний об ошибках, которые могут произойти при сохранении записей считайте Ссылку Констант Платформы CloudKit.

Выполните свое приложение

В XCode, выполненном Ваше приложение для выполнения кода, сохраняющего записи и создающего схему в базе данных.

Проверьте свои шаги

Используйте Инструментальную панель CloudKit, чтобы проверить, что типы записи были добавлены к схеме и что записи были добавлены к базе данных.

Просмотрите типы записи при помощи инструментальной панели CloudKit

Проверьте, что типы записи имеют корректные названия атрибута и типы.

Просмотреть типы записи

  1. Регистрируйтесь к инструментальной панели CloudKit.

  2. В верхнем левом выберите контейнер, используемый Вашим приложением от всплывающего меню.

    Если только одному приложению позволяют использовать CloudKit, имя его контейнера по умолчанию появляется, не всплывающее меню.

  3. В левом столбце нажмите Record Types.

    Типы записи, которые Вы добавили, появляются во втором столбце.

  4. Во втором столбце выберите тип записи.

    Названия атрибута и типы появляются в подробной области справа.

    ../Art/3_view_record_types_2x.png../Art/3_view_record_types_2x.png

    Users появляющийся тип записи является зарезервированным системным типом записи, который не может быть удален, но можно добавить атрибуты к нему.

Записи представления Используя инструментальную панель CloudKit

Проверьте, что записи, которые Вы сохранили, имеют все данные.

Просмотреть записи

  1. В левом столбце Инструментальной панели CloudKit нажмите Default Zone под Общедоступными Данными или Частными Данными.

    Записи появляются во втором столбце. (Если Вы не используете пользовательскую зону, записи сохранены в общедоступной зоне по умолчанию.)

  2. Во втором столбце щелкните по записи.

    Рекордные пары ключ/значение появляются в подробной области справа.

    ../Art/3_view_records_2x.png

Резюме

В этой главе Вы учились как: