Разделить кончик на несколько кончиков с помощью Core Data - PullRequest
1 голос
/ 07 июля 2010

В настоящее время у меня есть один managedContext, много NSArrayControllers сущностей, которые все довольно взаимосвязаны, и несколько окон, каждая из которых использует 1 или 2 NSArrayControllers. В окнах используются привязки основных данных, все настроено с помощью привязок какао, выполненных в IB

У меня есть 1 nib (xib) прямо сейчас со всем там. Часто при использовании моего приложения я открываю только одно из этих окон и не хочу загружать все остальное. Итак, в соответствии с рекомендациями Apple и здравым смыслом, я хочу разбить множество перьев (по одному для каждого окна в идеале)

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

Ответы [ 3 ]

0 голосов
/ 07 июля 2010

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

Например, если у вас настроен NSManagedObjectContext в вашем AppDelegate (наиболее распространенный), вы можете передать это NSManagedObjectContext следующему окну, когда AppDelegate его создаст. В кончике, связанном с этим окном, вы можете установить привязку к этому свойству NSManagedObjectContext на контроллере окна и связать его с ним.

обновление

На любой объект можно ссылаться через кончики, если он где-то находится в ваших контроллерах. Однако ссылаться на контроллеры массива в разных окнах - это плохой дизайн в целом. Если вы хотите, чтобы выбранный элемент был передан, рассмотрите возможность обойти только объект с помощью уведомлений или чего-то еще. Жёсткая проводка всё очень хрупкая и свидетельствует о том, что с дизайном что-то не так. MVC и внедрение зависимостей - это две схемы, к которым вы должны стремиться в целом.

0 голосов
/ 07 июля 2010

Это ошибка проектирования, чтобы соединить контроллеры представления (VC) вместе, чтобы плотно.Односторонняя передача фрагмента данных, как правило, подходит для небольших приложений, но в идеале вы даже не хотите этого делать.

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

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

Например, предположим, что у вас есть приложение с основной функцией, чтобы захватить два числа, сохранить их, сложить их вместе и вернуть результат.Было бы заманчиво просто сделать сложение в ВК и сразу же отобразить результат.Однако, поскольку это основная функция, модель данных должна выполнять добавление.Таким образом, любое представление или любой интерфейс могут легко добавлять числа, просто ссылаясь на функцию в модели данных.Если вы хотите добавить дополнительные представления, каждый новый VC просто должен знать о модели данных, а не о любом другом VC.

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

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

0 голосов
/ 07 июля 2010

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

образцы мамалька дают хорошее объяснение того, как работают привязки.

АЦП на привязках

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