iPhone: как работать с отношениями Core Data

Я новичок в основных данных и баз данных в целом. Теперь мне нужно проанализировать XML и сохранить содержимое в Core Data. XML выглядит примерно так:

<books>
<book id="123A" name="My Book">
      <page id="95D" name="Introduction">
          <text id="69F" type="header" value="author text"/>
          <text id="67F" type="footer" value="author text"/>
    </page>
    <page id="76F" name="Chapter 1">
       <text id="118" type="selection">
            <value data="1">value1</value>
            <value data="2">value2</value>
            <value data="3">value3</value>
       </text>
    </page>
</book>
    <book id="124A"...

Из моего понимания мне понадобятся четыре сущности, такие как "Книги", "Книга", "Страницы" и "Текст". Интересно, как правильно установить отношения и как добавить, например, объект Page к объекту Book и как получить значение атрибута объекта Text? Уроки, которые я нашел, в основном касаются одной сущности, так что я не совсем понял идею. Благодарен за любую помощь!

2 ответа

Нет, вам нужно три объекта. Вы можете думать о "Книгах" как о базе данных CoreData, которую вы используете. База данных CoreData затем включает в себя ряд сущностей, называемых book.

Я думаю, что модель данных у вас немного странная, но я думаю, что это имеет смысл для вашего приложения. Чтобы сопоставить его с CoreData, я бы:

Добавить сущности Книга, Страница, Текст

Добавьте к ним bookId, pageId, textId соответственно.

Затем добавьте отношение из страницы в книгу и из текста в страницу.

К тому времени вы сможете распечатать целую книгу, запрашивая все страницы, которые имеют

Книга = книга, в которой вы заинтересованы

а затем упорядочить все эти страницы по их идентификатору страницы

и по порядку, попросите все тексты, которые имеют Page = текущая страница

затем упорядочите эти тексты по их textId.

Проблема может заключаться в том, что текст может иметь несколько значений, как видно из вашего XML выше. Вы можете использовать это, добавив другую сущность с именем Value, но я бы, вероятно, решил ее, добавив атрибуты "value" и "type" напрямую к текстовой сущности. (Затем вы можете использовать "значение" в качестве второго ключа сортировки при печати страницы.

Проверьте эти ссылки: http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreData/ http://developer.apple.com/cocoa/coredatatutorial/index.html (для обычного какао, но те же принципы, так что это должно помочь)

Другие вопросы по тегам