Сортировка массива пользовательских объектов на основе необязательного свойства строки в Swift - PullRequest
2 голосов
/ 27 марта 2019

Я пытаюсь отсортировать массив в swift типа ObjCClass, который является классом c. ObjCClass имеет свойство name, которое является необязательным для типа String. Я хочу отсортировать объекты в массиве в порядке возрастания, основываясь на свойстве name. Как я могу сделать это без распаковки?

Я пытался использовать это:

var sortedArray = unsortedArray.sorted(by: { $0.name as String! < $1.name as String!})

Я пытался использовать охрану и операторы if / let, чтобы проверить, существует ли свойство 'name', но я продолжаю сталкиваться с ошибками, так как не думаю, что делаю это правильно. Как я могу проверить, существует ли свойство для каждого объекта в массиве, а затем выполнить сортировку?

1 Ответ

1 голос
/ 27 марта 2019

Сначала отфильтруйте ненужные записи, затем сравните name с принудительным развёртыванием

var sortedArray = unsortedArray
    .filter { $0.name != nil }
    .sorted { $0.name! < $1.name! }

ПРИМЕЧАНИЕ:

  • В этом случае принудительное развёртывание подходит, потому что filter удаляет nil случаев, и к тому времени, когда мы подходим к sorted, name имеет для присутствия
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...