"Значение необязательного типа 'Set <String>?'должен быть развернут ", но я не просил опционально - PullRequest
0 голосов
/ 24 декабря 2018

Xcode жалуется "Значение необязательного типа 'Set?'должна быть развернута, чтобы ссылаться на член «содержит» базового типа «Набор» «*» 1001 *

Вот функция:

func talks_to (_ dialog_dict: Dictionary<String, Set<String>>, one: String, two: String) -> Bool {
        return dialog_dict[one].contains(two)
    }

Это вложенная функция, предназначенная только для упрощения логики,и параметры гарантированно не равны нулю по внешнему коду.Как мне быстро понять это?

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Каждый раз, когда вы выбираете элемент из словаря с использованием подписки, результатом будет Optional, поскольку используемый вами ключ может быть не найден.Sh_Khan дал вам хорошее элегантное решение: (проголосовало)

return dialog_dict[one]?.contains(two) == true

Это работает, потому что nil не равно true, но компилятор развернет его и проверит значение внутри, чтобы увидеть, равно ли оно true, если это не nil,Поэтому, если результат dialog_dict[one] равен нулю или ложен, он не равен истине.Только если dialog_dict содержит значение для ключа one и это значение true, выражение возвращает true.

0 голосов
/ 24 декабря 2018

Сделать это

return dialog_dict[one]?.contains(two) == true

или

return dialog_dict[one]!.contains(two) 

это dialog_dict[one] возвращает необязательно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...