Управление данными для UITableViews - PullRequest
1 голос
/ 29 августа 2009

У меня есть два очень простых, идентичных UITableViews в моем приложении, которые заполнены миниатюрными изображениями с именами «thumb1.jpg», «thumb2.jpg» и т. Д. С этими миниатюрами связаны исходные изображения «1.jpg» и текстовые файлы ». 1.txt "используется для обработки изображений. Все хранится в папке документов приложения.

Я хочу сохранить нумерованные, упорядоченные имена для этих файлов, поскольку с помощью cellForRowAtIndexPath очень просто отображать миниатюры в UITableViews. В настоящее время я использую NSMutableArray (index: 1 object: "thumb1.jpg" и т. Д.) Для отслеживания всех изображений в приложении.

Проблема в том, что пользователи могут добавлять / удалять изображения, поэтому поддержание порядка важно. Для обработки добавления / удаления я смотрю на использование insertObjectAtIndex и removeObjectAtIndex на NSMutableArray, который будет поддерживать порядок, но потребует программного изменения имен изображений и текстовых файлов, когда это произойдет. Например, если в массиве «0.jpg» имеется пять изображений, «1.jpg», «2.jpg», «3.jpg», «4.jpg» и пользователь удаляет второе изображение («1 .jpg ") теперь массив будет иметь" 2.jpg "с индексом 1, поэтому имена файлов должны быть изменены на" 1.jpg "," 1.txt "и" thumb1.jpg ".

Как звучит этот подход? Я новичок в Objective-C, так что если у вас есть другие функции, которые вы используете, и т.д., мне было бы интересно услышать ваше мнение.

1 Ответ

1 голос
/ 29 августа 2009

Переименование самих файлов изображений не очень хорошая идея.

Я бы реализовал 2 NSMutableArrays, один для хранения заголовка / описания изображения и один для хранения имени файла (или, если хотите, вместо этого фактический UIImage). Затем, если вам нужно удалить, например, элемент с индексом 2, удаление одного и того же объекта из каждого из двух массивов оставит их в синхронизации.

Если вы начинаете хотеть хранить все больше и больше вещей для каждой строки, я предлагаю вам реализовать свой собственный класс. Затем вы можете реализовать массив из нескольких экземпляров этого класса, и каждый класс будет иметь такие свойства, как изображение, текст, эскиз и т. Д. Фактически, поскольку вы уже назвали три отдельных свойства (основное изображение, текст и эскиз), я Мне хочется сказать, что вы должны сразу реализовать собственный класс.

Дайте мне знать, если это имеет смысл, или вы хотите, чтобы какой-то код проиллюстрировал это.

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