init?(plistRepresentation : AnyObject){
switch plistRepresentation{
case "viewing":
self = .viewing
}
}
上面的代码生成“类型为'String'的表达模式不能与类型为'AnyObject'的值匹配”错误。但是当我添加“ as Sttring”的那一刻
init?(plistRepresentation : AnyObject){
switch plistRepresentation{
case "viewing" as String:
self = .viewing
}
}
错误消失了。.谁能向我解释这是如何工作的?这让我有些困惑。
谢谢
答案 0 :(得分:1)
AnyObject
是一种概括类型,包括所有类型的对象类型,例如数组,字典,集合,字符串等。
AnyObject 引用类的任何实例,并且等效于Objective-C中的id。当您特别想使用引用类型时,它很有用,因为它不允许使用Swift的任何结构或枚举。
Swift的开关希望特定类型匹配大小写,这就是您放as String
时错误消失的原因。
有关AnyObject的更多详细信息,请参见here