2016-05-05 1 views
0

Невероятно новый для Cloudkit, и я выяснял, как я могу моделировать свои данные. Ниже я дал небольшой образец кода, похожий на мою модель.Как создать эти данные/модель на Cloudkit, чтобы отобразить ее в моем приложении?

struct Street { 
    var house: [Home] 
} 

struct Home { 
    var people: [Person] 
    var houseNumber: Int 
} 
struct Person { 
    var firstName: String 
    var lastName: String 
    var age: Int 
} 

Я хотел бы сохранить эти данные в Облаке, а затем извлечь данные, которые будут отображаться в моем приложении. Дело в том, что я не уверен, как хранить данные.

Как сохранить его, чтобы все данные были связаны друг с другом?

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

Я предполагаю, что вы должны использовать ссылки, но я не уверен, как это сделать.

Надеюсь, я объясню это ясно, что я пытаюсь сделать.

ответ

0

Для начала ознакомьтесь с информацией об Apple, CloudKit Quick Start documentation. Он перейдет ко всему, что я собираюсь сказать гораздо более подробно, и я настоятельно рекомендую его прочитать.

Очень похоже на struct s, который вы создали в своем коде, вы создадите похожие объекты на веб-портале под названием CloudKit Dashboard. Этот веб-портал станет доступен вам после того, как права на iCloud будут правильно добавлены в ваш идентификатор приложения.

На боковой панели вы увидите «Типы записей». Здесь вы можете создавать свои объекты без какого-либо кода. В кратком руководстве приводится подробная информация о том, как создать объект, также известный как «тип записи». (Экземпляр этого объекта будет называться записью.) В основном вам нужно будет создавать поля, соответствующие примитивным свойствам объекта, но в целом не редактировать уникальный идентификатор, помещенный в поле имени записи. Например, ваш тип записей Person может иметь поля firstName (типа String), lastName (типа String), и возраст (типа Int).

Ваш Home тип записи, то, возможно, имеет поле houseNumber, типа Int.

Способ взаимодействия с CloudKit немного отличается от локальных решений хранения данных, таких как основные данные. По соображениям эффективности мы не хотим, чтобы объекты содержали группу связанных объектов, так как выборка Street, скажем, потребовала бы получить каждый идентификатор House, а затем извлекать каждый идентификатор Person в House.

Таким образом, вместо размещения массива House объектов на Street, мы помещаем поле типа ReferenceHouse) на нашем типе Street записи.

Итак, с этой новой моделью типов записей, которую вы установили бы в CloudKit Dashboard, вы могли бы в коде создать CKRecord объекты и задать свойства, соответствующие полям. Обозначая CKRecord, представляющий House, в котором люди живут в нем, можно было бы установить свойство house на каждом из CKRecord s, представляющем людей в доме.

Вы могли бы принести дом, используя CKQuery, например, а затем принести это люди, создавая CKQuery для всех «Людей» объектов, которые имеют идентификатор записи, соответствующий объекту дома в их house опорном поле.

См. Adding Reference Fields в Кратком руководстве по CloudKit.

Редактировать: При установке значения поля Reference в CloudKit Dashboard значение будет уникальным идентификатором имени записи, на которую вы ссылаетесь.

+0

Я использовал cloudkit для отправки и получения данных и с панели управления. Это просто ссылка, которая меня немного смущает. На полпути вниз по ссылке ссылки, которую вы мне предоставили, добавление ссылочных полей, ссылается на 'Artwork' и' Artist'. Предположим, я хотел узнать возраст художника «Мария Руис», но эти данные не пришли с изображением, вместо этого, скажем, он пришел с данными художника. Будет ли «Мария Руис» еще одной публичной записью? На самом деле сейчас я пишу это, я считаю, что ссылки нуждаются в работе назад? Поэтому я создаю запись для «Личность» и ссылаюсь на «Главная» – luke

+0

Извините, если все это путано читать, а то, что я прошу, не кратки. Мне кажется, я знаю, что хочу знать, но знать, что я хочу спросить, сложно. – luke

+1

Вы правы, что записи в CloudKit работают обратными. У вас будет поле для ссылки на Person, которое указывает на Дом. Затем вы можете создать запрос для всех «человек» для данного дома. –