Порядок сортировки массива
Наше табличное представление получает свою информацию непосредственно из массива drinks. По сути, номер строки просто связывается с индексом массива в cellForRowAtlndexPath:.
Сортировка массива с использованием NSSortDeseriptor.
Чтобы список в табличном представлении был правильно упорядочен, следует отсортировать массив данных. Именно эту задачу решают объекты NSSortDeseriptor. Вы указываете, что нужно сравнивать (свойство), как сравнивать (необязательный селектор) и в каком порядке должна отображаться информация. В нашем случае элементы должны сортироваться в алфавитном порядке по названию коктейля.
Включите код сортировки в AddDrinkViewController и запустите приложение. Давайте добавим еще один рецепт; он должен оказаться в правильной позиции списка.
Все данные были потеряны при выходе из приложения.
Мы убедились в том, что новый рецепт добавился в массив, но очевидно, новый массив не пережил выхода и перезапуска приложения.
Что нужно делать? И когда?
Петя: Надо сохранять массив после каждого добавления нового рецепта, верно? В этом случае мы будем всегда иметь правильные данные.
Вася: Не надо спешить. Надо помнить о быстродействии и управлении памятью.
Петя: В чем проблема? Всего-то маленький массив.
Вася: Но он будет сохраняться каждый раз, когда мы добавляем новый рецепт.
Петя: Понятно, нам придется многократно читать и сохранять массив. Такое решение неэффективно.
Вася: Тогда в какой момент выполнять сохранение?
Петя: Когда приложение работает в фоновом режиме! В условиях многозадачности приложения не закрываются, а при переходе в фоновый режим можно сохранить данные.
Вася: Как нам это сделать? Как определить, когда пользователь перевел приложение в фоновый режим?
Петя: Как насчет метода applicationDidEnterBackground в делегате приложения?
Вася: Но делегат приложения ничего не знает ни о нашем списке рецептов, ни о том, где его сохранять.
Петя: Логично. В описании UIApplicationDelegate также сказано об оповещении, которое рассылается в этом случае. Наверняка им можно воспользоваться.
Используя дискуссию ребят, а также ваши навыки работы с API, предложите возможную реализацию сохранения массива. Сохранение данных реализуется в файлах RootViewController.m и RootViewController.h.
- Дата: 22-12-2014, 23:13