iPhone: как работать с отношениями Core Data - PullRequest
0 голосов
/ 20 марта 2011

Я новичок в основных данных и баз данных в целом. Теперь мне нужно проанализировать 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 ]

2 голосов
/ 20 марта 2011

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

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

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

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

Затем добавьте отношение от Страница до Книга и от Текст до Страница .

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

Книга = книга, которая вас интересует

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

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

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

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

0 голосов
/ 20 марта 2011

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

...