Вы проектируете модель данных, основываясь не на том, как данные будут отображаться, а на том, как данные логически связаны с самим собой.Каждый объект должен моделировать объект, событие или состояние реального мира без учета того, как эти данные будут отображаться.
В этом случае вы моделируете книги и предоставляете пользователю организацию этих книг в списке.Вам нужен объект книги для моделирования книг и объект списка для моделирования организации пользователей.(Это не обязательно должен быть «список», это может быть «коллекция», «полка» и т. Д. В зависимости от того, что вы пытаетесь смоделировать.)
Предположительно, каждая книга может быть в другом списке ив каждом списке может быть много книг.
Book {
author:string;
copyright:sting/date;
item:(?);
title:sting;
list<<-(optional,nullify)-->>list.books
}
List {
name:string;
books<<--(optional,nullify)-->>book.list;
}
В вашем пользовательском интерфейсе контроллер выборок результатов (FRC) извлекает все объекты списка и затем отображает имя каждой из них в табличном представлении.Когда строка таблицы выбрана, вы нажимаете следующее представление и передаете ему NSSet, возвращенный list.books объекта списка, связанного с этой строкой.
В следующем табличном представлении каждая строка заполняется одним или несколькими атрибутами каждого объекта книги в переданном наборе.Когда строка выбрана, вы нажимаете на детальный вид книги и передаете ему объект книги, связанный с выбранной строкой.
Обратите внимание, что с точки зрения модели данных пользовательский интерфейс не имеет значения.Вы можете отображать данные в веб-представлении или даже в текстовой командной строке.Все, что заботит модель данных - это содержимое сущностей и логические отношения между ними.
Создайте модель данных для обработки логических отношений в ваших данных.После этого пользовательский интерфейс становится очень простым для реализации независимо от формата, потому что пользовательский интерфейс не отвечает за поддержание целостности модели данных, и модели данных не нужно беспокоиться о состоянии пользовательского интерфейса.