gpt4 book ai didi

ios - iOS 8.1 不再允许 CGPoint stringliteral

转载 作者:可可西里 更新时间:2023-11-01 00:53:38 25 4
gpt4 key购买 nike

在 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 之前使用枚举的方式,但现在不再允许了。

现在我遇到了很多这样的错误:

。类型“CGPoint”不符合协议(protocol)“StringLiteralConvertible”

。 “字符串”不能转换为“CGPoint”

那么有什么方法可以让它像以前一样工作吗?任何答案或建议都将不胜感激!

最佳答案

StringLiteralConvertible 协议(protocol)已更改,现在需要一个初始化器:

protocol StringLiteralConvertible : ExtendedGraphemeClusterLiteralConvertible {
typealias StringLiteralType
init(stringLiteral value: StringLiteralType)
}

另外,它继承自

protocol ExtendedGraphemeClusterLiteralConvertible : UnicodeScalarLiteralConvertible {
typealias ExtendedGraphemeClusterLiteralType
init(extendedGraphemeClusterLiteral value: ExtendedGraphemeClusterLiteralType)
}

又继承自

protocol UnicodeScalarLiteralConvertible {
typealias UnicodeScalarLiteralType
init(unicodeScalarLiteral value: UnicodeScalarLiteralType)
}

因此您可以将协议(protocol)实现为:

extension CGPoint: StringLiteralConvertible {

public init(stringLiteral value: StringLiteralType) {
self = CGPointFromString(value)
}

public init(extendedGraphemeClusterLiteral value: StringLiteralType) {
self = CGPointFromString(value)
}

public init(unicodeScalarLiteral value: StringLiteralType) {
self = CGPointFromString(value)
}
}

示例用法:

 print(Direction.Top.rawValue)
// Output: (0.0,-1.0)

关于ios - iOS 8.1 不再允许 CGPoint stringliteral,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26827944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com