And*_*can 10 enums types swift
我在AppDelegate,尝试将回复传递给WatchKit扩展请求.我不能使用枚举数组作为其值被类型为AnyObject的Dictionary中的值.在游乐场试验表明:
enum E : Int {
case a = 0
case b
}
var x : AnyObject = [0, 1] // OK
var y : AnyObject = [E.a, E.b] // [E] is not convertible to AnyObject
Run Code Online (Sandbox Code Playgroud)
当然我可以通过将我的枚举转换为字符串或数字来解决这个问题,但为什么这是Swift中的类型错误?
vac*_*ama 24
AnyObject存在与Objective-C的兼容性.您只能将对象放入[AnyObject]Objective-C可以解释的数组中.Swift枚举与Objective-C不兼容,因此您必须将它们转换为.
var x: AnyObject = [0, 1]因为Swift会自动处理Objective-C可以处理Int的类型的转换NSNumber.不幸的是,Swift枚举没有这样的自动转换,所以你可以做以下事情:
var y: AnyObject = [E.a.rawValue, E.b.rawValue]
Run Code Online (Sandbox Code Playgroud)
这假设您的枚举具有Objective-C可以处理的基础类型,例如String或Int.
另一个不起作用的例子是可选的.
var a: Int? = 17
var b: AnyObject = [a] // '[Int?]' is not convertible to 'AnyObject'
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅使用Cocoa数据类型.
| 归档时间: |
|
| 查看次数: |
3757 次 |
| 最近记录: |