Тип аргумента 'Строка?' не соответствует ожидаемому типу StringProtocol - PullRequest
0 голосов
/ 09 марта 2020

enter image description here

Эта ошибка возникает при использовании compare на String в Swift 5, она принимает только StringProtocol, но я хочу использовать ее на String и нигде не могу найти, как это сделать.

Я искал все и не могу понять, в чем проблема.

1 Ответ

4 голосов
/ 09 марта 2020

Проблема в том, что Optional<String> (он же String?) не соответствует StringProtocol (и это имеет смысл). Развертывать необязательно, есть несколько способов:

  1. Развертывание по if let / guard (if let version = dbData?.version { //compare })
  2. Предоставление значения по умолчанию (`(dbData? .Version? ? "")), что не рекомендуется, поскольку оно может обеспечить ненужные коллизии
  3. Принудительное развертывание dbData!.version, что крайне не рекомендуется, поскольку может привести к аварийному завершению работы приложения, если параметр Optional равен nil
...