Перед обновлением до Swift 4.2 у меня было следующее расширение словаря:

extension Dictionary where Value: Equatable {
    func someKey(forValue val: Value) -> Key? {
        return first(where: { $1 == val })?.key
    }

}

И используйте его в словаре [String:String].

enter image description here

enter image description here

После обновления до 4.2 компиляция не выполняется: такого метода не существует

Есть ли изменения в определении словаря в 4.2?

-1
AlexBerd 26 Сен 2018 в 10:57

2 ответа

Лучший ответ

Вероятно, вы не добавили в проект файл, в котором правильно расположено ваше расширение.

Перейдите в свой проект Targets> Build Phases> Compile Sources и проверьте, указан ли там ваш Swift-файл, содержащий расширение вашего словаря, если нет, щелкните значок плюса и добавьте его. После этого вы сможете использовать свои методы расширения в любом месте вашего проекта.

1
Leo Dabus 2 Окт 2018 в 14:09

@Leo Dabus был прав в этом комментарии. По какой-то причине файла расширения не было в моих исходных кодах компиляции.

enter image description here

Когда я добавляю его в исходный код компиляции, все работает нормально

0
AlexBerd 27 Сен 2018 в 14:10