Как связать NSTableView с несколькими основными типами объектов данных - PullRequest
2 голосов
/ 22 июня 2011

Я пишу приложение, чтобы помочь диабетикам управлять своим состоянием. Отслеживаемая информация включает в себя результаты измерения уровня сахара в крови, информацию о питании, физических упражнениях и лекарствах. В похожих приложениях все эти записи представлены в едином табличном представлении, даже если у каждого типа записи есть разные поля. Эти данные вручную отслеживаются многими диабетиками в журнале, и я стараюсь сохранить эту парадигму.

Каждая запись имеет некоторую общую информацию (временную метку, категорию и примечания), а также информацию, специфичную для каждого типа записи. Например, записи о приеме пищи будут содержать подробную информацию о питании (количество углеводов, клетчатки, жира и т. Д.), Записи о приеме лекарств будут указывать, какие лекарства и дозировки и т. Д.

Я рассмотрел два разных подхода, но при попытке реализовать любой из них я застрял как на концептуальном, так и на техническом уровне. Первый подход состоял в том, чтобы создать абстрактную сущность, содержащую все общие поля, а затем создать сущности для каждого типа записи в журнале (питание, медикаменты, bg и т. Д.), Которые связаны с абстрактной сущностью. Я все это смоделировал, но не мог понять, как связать эти элементы с контроллером массива, чтобы они отображались в одном табличном представлении.

Второй подход состоит в том, чтобы иметь один объект, который содержит общие поля, а затем моделировать конкретные типы записей как отдельные объекты, которые имеют отношение обратно к общей записи (что-то вроде шаблона декоратора). Это было несколько проще для создания пользовательского интерфейса (по крайней мере, для объекта общего поля), но я сталкиваюсь с той же проблемой, когда хочу связать определенные объекты данных.

Конечно, самый простой подход - просто выбросить все поля из каждого типа записи в одну сущность, но это противоречит всем моим чувствам. И кажется, что я все еще столкнулся бы с подобной проблемой, когда я иду, чтобы связать вещи с табличным представлением.

Моя конечная цель - предоставить пользователю интерфейс, который отображает каждую запись в хронологическом порядке в унифицированном интерфейсе, вместо того, чтобы хранить отдельный список каждого типа записи. Я в порядке, добавляя код там, где это необходимо, но я бы хотел использовать привязки как можно больше.

Заранее спасибо за любой совет.

1 Ответ

1 голос
/ 22 июня 2011

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

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

После того, как ваша модель настроена правильно, создание пользовательского интерфейса обычно легко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...