NSSortDescriptor с функцией

#ios #ios4 #nssortdescriptor

#iOS #ios4 #nssortdescriptor

Вопрос:

У меня ограниченный опыт использования NSSortDescriptor. Сортировка производилась по одному ключу, и все работало нормально. Но вот что мне нужно сейчас, у меня есть набор пар чисел, например : {(2,3), (44,5), (6,17), (33,7) ……(173,21)} Я хочу отсортировать пары (x, y) в соответствии со значением заданной функции myfunction(x,y). Существует тривиальная идея создания триплетов (x, y, z), где z будет вычислением myfunction (x, y), а затем отсортировать набор триплетов, но это не то, что я хочу.

Есть ли правильный способ использовать NSSortDescriptor для выполнения того, что мне нужно?

Спасибо за любую информацию.

Комментарии:

1. проверьте soulwithmobiletechnology.blogspot.com/2011/08 /…

2. Для чего вы используете дескриптор сортировки в этой ситуации? Вы просто сортируете массив?

3. @parapurarajkumar Этот блог хорош, но просто показывает способы сортировки цепочки на основе непосредственно свойств. Мишель, ты когда-нибудь находил способ сделать это?

Ответ №1:

Если вы не используете этот дескриптор сортировки с основными данными, используя хранилище SQLite, вы могли бы создать временный атрибут для объекта, где атрибут представляет z , вычисление вашей функции. Затем вы могли бы выполнить сортировку по этому временному атрибуту, и это дало бы желаемые результаты, не сохраняя z значений.

Однако, если вы используете Core Data с хранилищем, подобным SQLite, где все содержимое хранилища не считывается в память, вы не можете использовать атрибуты transient для сортировки, и вам придется либо сохранить ваши значения z фактически в управляемых объектах, чтобы достичь того, что вы описываете, либо прочитать все ваши управляемые объекты в массив, а затем отсортировать этот массив объектов по свойству transient… которая работала бы нормально, если бы у вас было только ограниченное количество управляемых объектов, но не так хорошо в противном случае.