【发布时间】:2017-10-06 12:35:13
【问题描述】:
编辑:我向你们所有人道歉,这一直是我的错——即使在 Swift 3 中也是不可能的。我很困惑自己。抱歉这个问题。
显然,在 Swift 4 中不再可能将枚举值数组桥接到 Objective C,甚至无法使用 @objc 注释:
@objc open func removeCacheAfterDelay(_ delay: Double, forType types: [CacheManagerType]) {
}
@objc public enum CacheManagerType: Int, RawRepresentable {
case credit
case debit
case transactionHistory
}
removeCacheAfterDelay函数显示以下错误:
方法不能被标记为@objc,因为参数2的类型 无法在 Objective-C 中表示
我错过了什么吗?有什么解决办法吗?
【问题讨论】:
-
问题是数组,而不是枚举。
-
谢谢马特,但有什么办法让它工作吗?即使使用此数组桥接到 ObjC 时,此方法在 Swift 3 中也可以正常工作...
-
我认为这是因为 Swift 3 中桥接的性质不同。
-
那么这是否意味着它不再在 Swift 4 中工作了?一些解决方法呢?在我的应用程序中,我有很多桥接到 ObjC 的 swift 枚举数组...
-
使它们成为
[Int]数组并将枚举映射到它们的原始值。之所以有效,是因为 Ints 映射到 NSNumber,它是一个对象。
标签: objective-c swift enums