Шаблон выражения типа 'String' не может соответствовать значениям типа 'AnyObject' - PullRequest
0 голосов
/ 02 ноября 2018
init?(plistRepresentation : AnyObject){
            switch plistRepresentation{
            case "viewing":
                self = .viewing
    }
}

Приведенный выше код генерирует ошибку «Шаблон выражения типа« Строка »не может соответствовать значениям типа« AnyObject »». Но в момент, когда я добавляю "как Sttring"

init?(plistRepresentation : AnyObject){
                switch plistRepresentation{
                case "viewing" as String:
                    self = .viewing
        }
    }

ошибка исчезает .. Может кто-нибудь объяснить мне, как это работает? Это выглядит странно для меня.

Спасибо

1 Ответ

0 голосов
/ 02 ноября 2018

AnyObject - это обобщенный тип, который включает в себя все типы типов объектов, такие как массив, словарь, набор, строка и т. Д.

AnyObject относится к любому экземпляру класса и эквивалентен id в Objective-C. Это полезно, когда вы специально хотите работать с ссылочным типом, потому что он не позволяет использовать какие-либо структуры или перечисления Swift.

Переключатель Swift хочет, чтобы определенный тип соответствовал случаю, который является причиной, когда вы ставите as String, ошибка исчезает.

Подробнее о AnyObject можно узнать здесь

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