2015-06-19 5 views
0

Я создаю приложение todo, и я хочу создать страницу «История» в приложении.Правильное использование принципа mvc между контроллером представления в виде таблицы

Прямо сейчас у меня есть файл модели, и я создал в нем объект «todo» с различными атрибутами (тело, статус, время и т. Д.) И im, используя данные ядра, чтобы удерживать эти todo.

Таким образом, я создал кнопку на странице «История», которая представляет собой табличный вид, и теперь я пытаюсь выяснить, как сохранить отмеченные помехи, и заполнить ячейки истории (таблицы) ячейками этого списка ,

Поэтому я думал, что в контроллере Home view я создам свойство NSMutableArray, называемое «todos», и плохо создайте метод в файле .m-файла Home view, который добавляет todos в свойство todos, импортирует домашний вид контроллера в контроллер просмотра таблицы истории и заполнить его ячейки с помощью свойства массива todos.

Насколько плохо это решение?

благодарит

+0

Почему бы просто не использовать NSPredicate для извлечения «готовых» объектов todo из CoreData? –

+0

@Peter Zhou - какой смысл иметь модель, если контроллер напрямую обращается к CoreData? – Gruntcakes

+0

Почему вы беспокоитесь о том, что домашний контроллер передает todos на контроллер истории? - Просто попросите диспетчер истории выбрать todos непосредственно из модели, когда они будут обновлены в контроллере истории, отправьте обновленные обратно модели, чтобы модель сохранила изменения. – Gruntcakes

ответ

0

Вы не должны использовать массив для хранения вашего ToDos. Это может привести к чрезмерному использованию памяти и снижению производительности. Чтобы отобразить объекты Core Data в виде таблицы, используйте класс NSFetchedResultsController, который был специально разработан для этой цели.

Вы можете найти шаблонный шаблон из шаблона Xcode (выберите «Мастер-деталь», отметьте «Основные данные» и посмотрите на контроллер основного вида).

В вашем ленивым инициаторе контроллера надуманных результатов добавить этот предикат:

request.predicate = [NSPredicate predicateWithFormat:@"done = YES"]; 

или вместо done использовать любой флаг вы включили в модели, чтобы указать, что элемент должен быть показан в окне истории ,

Смежные вопросы