Сортировать массив на основе наличия свойства - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть массив чатов, и я хочу отсортировать их по существующим в них сообщениям. Возможно, что в чате нет сообщений, и сообщения необязательны.

Я не могу обернуть голову вокруг этого или как подойти к этому. Я пытался найти хороший код сортировки, но не смог.

chats.sort {
     guard let first = $0.messages, let second = $1.messages else { return false }
     return first && !second
}

Ошибка: Cannot convert value of type '[Message]' to expected argument type 'Bool'

Все, что я пробую в sort методе, заканчивается какой-то ошибкой. Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Требуется сортировка в зависимости от того, messages равно nil или нет.

chats.sort { return $0.messages != nil && $1.messages == nil }
0 голосов
/ 29 апреля 2018

Проблема в том, что в вашем результате messages не является Bool экземпляром.

Вы пытаетесь сказать:

[Сообщение], а не [Сообщение]

Свифт не понимает вас.

Возможно, вы пытаетесь проверить параметр 'messages' в стиле obj-c (или нет). Swift не позволяет проверять нулевое значение с помощью неявного преобразования.

одно из возможных решений: 1. Если вы попытаетесь использовать неправильный параметр

chats.sort {
     guard let first = $0.someBool, let second = $1.someBool else { return false }
     return first && !second
}
  1. проверить ноль
>  chats.sort {
>              guard let first = $0.someBool, let second = $1.someBool else { return false }
>              return true
>         }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...