Сортировка столбца таблицы по длине строки не работает, как задумано, когда выполняется в IB через какао - привязки - PullRequest
0 голосов
/ 13 июня 2010

Я сделал пример приложения, отображающего список сотрудников с их зарплатами через NSTableView, используя NSArrayController.

Базовая функциональность работает так, как задумано. Также сортировка работает нормально, когда селектор - compare или caseInsensitiveCompare назначен в области атрибутов для столбца таблицы - employeeName.

Проблема возникает, когда я пытаюсь отсортировать ее по длине строки, установив селектор в IB как - length, для столбца таблицы - employeeName. Это делает сортировку по длине строки, но делает это неуместно.

It is doing sorting on alternate clicks т.е. при первом клике сортирует содержимое таблицы в порядке убывания по длине. Затем при втором щелчке он не упорядочивает содержимое по возрастанию по длине, а устанавливает стрелку сверху, как при возрастании. Затем при третьем щелчке он упорядочивает содержимое по возрастанию по длине, но устанавливает стрелку в верхней части столбца таблицы, как по убыванию, и так далее ...

Кто-нибудь может подсказать, если я где-то не прав?

Спасибо

Miraaj

Ответы [ 2 ]

4 голосов
/ 23 февраля 2011

Я предполагаю, что вы работаете с Cocoa Programming для Mac OS X. Глава 8,

Вам нужно установить для sortKey значение personName.length, а для селектора - compare: для столбца..

Затем дескриптор сортировки будет сортироваться путем «сравнения» строки «длины».

0 голосов
/ 28 декабря 2016

Ответ для начинающих разработчиков macOS (чтение книги BNR) и языка Swift:

Строка Swift не имеет свойства length.Вы можете получить доступ к его длине путем подсчета массива символов.

Для этого вам нужно установить sortKey на name.characters.count и selector на compare:.

Я предполагаю, что BNR предлагает вам найти что-то, чтобы представлять длину строки, а не свойство или метод length.

...