Можно ли повторно сортировать массив каждый раз, когда вам нужен доступ к элементу по определенному индексу? - PullRequest
1 голос
/ 03 декабря 2010

У меня есть TableViewController, который отображает список взаимосвязей элементов CoreData.В моем cellForRowAtIndexPath: я получаю sortedArray из набора и затем обращаюсь к элементу в indexPath.row.Затем в didSelectRowAtIndexPath: я делаю то же самое.

Это считается плохой практикой?Я вижу теоретическую опасность в том, что если мой метод сортировки возвращает массив после другой сортировки при последующем вызове, я мог бы в конечном итоге взаимодействовать с объектом B, даже если пользователь нажал на ячейку, которая показала объект A. Это не должно быть возможно длямоя сортировка возвращает массив, отсортированный по-разному, но я все еще чувствую, что это технически рискованно.

Единственный другой способ, которым я знаю, это сделать, чтобы мой tableViewController сохранил свой собственный член NSArray, и когда он первыйзагружает, заполняет массив, сортируя набор.Единственная проблема с этим состоит в том, что тогда мне придется отдельно поддерживать и набор, и массив;изменение, вставка или удаление объектов из обоих в любое время, когда пользователь что-то меняет.Считается ли это «правильным» способом отображения элементов CoreData в таблице?

Ответы [ 2 ]

2 голосов
/ 03 декабря 2010

Я бы определенно выбрал вариант B. Даже если вы будете поддерживать данные вашей модели и массив в вашем контроллере, это не должно быть слишком сложным. добавление / удаление элементов из контроллера потребует обновления модели. Вы не только обойдете проблему риска дублирования данных, но и увидите значительное увеличение производительности, поскольку вы не получаете вновь отсортированный массив каждый раз, когда вы его вызываете.

2 голосов
/ 03 декабря 2010

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

То, что вы, похоже, спрашиваете о «сортировке одинаково каждый раз», это то, что называется «стабильная сортировка». Задайте себе вопрос: если используется какой-то порядок, отличный от используемого ключа (ключей), то почему вы тоже не сортируете по ним?

...