如何在Swift协议可选函数中使用枚举作为参数

5

我在Swift中有这个枚举

enum Direction: Int{
  case Left2Right = 0, Right2Left
}

这个协议。
@objc protocol CellDelegate : NSObjectProtocol{
   optional func has(direction:SwipeDirection) -> Bool
}

我遇到了这个错误:因为参数类型不能在Objective-C中表示,所以无法将方法标记为@objc

有人能告诉我为什么会出现这个错误以及如何修复吗?谢谢!

1个回答

7

@objc属性使协议与Objective C兼容(即可用)。但是在1.2 beta之前的Swift枚举不可用于Objective C。因此,您不能在该协议中使用Swift枚举。

我认为最好的解决方案是使用Swift 1.2-它仍处于beta版(截至今天),但可以将@objc属性应用于Swift枚举。


感谢你的回答。我加上 @obj 属性是因为没有它会出现错误。 - Dănuț Mihai Florian
'optional' 只能应用于 @objc 协议的成员。 - Dănuț Mihai Florian
1
我建议使用Swift 1.2 - 它仍处于测试阶段,但是您可以将@objc 应用于枚举......那就能解决您的问题。 - Antonio
1
UIKit类、协议等是从Objective-C桥接过来的,它们并非用Swift编写。 - Antonio
@Antonio 太好了!我不知道在新的Swift 1.2 beta版中他们修复了那个问题.. +1 :) - valbu17
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接