【发布时间】:2014-11-09 12:04:17
【问题描述】:
在 iOS 8.0 中,我有这个枚举:
enum Direction:CGPoint {
case Top = "{0, -1}"
case Right = "{1, 0}"
case Down = "{0, 1}"
case Left = "{-1, 0}"
case TopLeft = "{-1, -1}"
case TopRight = "{1, -1}"
case DownLeft = "{-1, 1}"
case DownRight = "{1, 1}"
case None = "{0, 0}"
}
extension CGPoint: StringLiteralConvertible {
public static func convertFromStringLiteral(value: StringLiteralType) -> CGPoint {
return CGPointFromString(value)
}
public static func convertFromExtendedGraphemeClusterLiteral(value: StringLiteralType) -> CGPoint {
return convertFromStringLiteral(value)
}
}
现在这正是我想要的方式,我不得不使用字符串,因为简单的 case Top = CGPoint(x:0,y:1) 不起作用。
我像这样使用它:
1. var Dir:Direction = .None
2. self.center.AddWithPoint(self.Dir.rawValue.multiply(CGFloat(Speed)))
3. bullet.Dir = .Right
现在这就是我在 8.1 之前使用枚举的方式,但现在不再允许了。
现在我收到一大堆这样的错误:
. Type 'CGPoint' does not conform to protocol 'StringLiteralConvertible'
. 'String' is not convertible to 'CGPoint'
那么有什么办法可以让它像以前一样工作吗?任何答案或建议表示赞赏!
【问题讨论】:
标签: ios swift enums literals cgpoint