小编Der*_*way的帖子

是否可以使用枚举符合StringLiteralConvertible?

尝试在枚举中采用StringLiteralConvertible时:

enum Component: StringLiteralConvertible {
    case Static(String)
    case AnyInt

    typealias ExtendedGraphemeClusterLiteralType = String
    typealias UnicodeScalarLiteralType = String

    init(unicodeScalarLiteral value: UnicodeScalarLiteralType) {
    }
    init(extendedGraphemeClusterLiteral value: ExtendedGraphemeClusterLiteralType) {
    }
    init(stringLiteral value: String) {
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Variable 'self' used before initialized
Run Code Online (Sandbox Code Playgroud)

在每个初始化器中.

根据NSHipster,遵循该协议的正确方法涉及覆盖一个类func,它接受一个字符串文字并返回所需类/结构的对象.像这样:

static func convertFromStringLiteral(value: String) -> CGPoint {
    return NSPointFromString(value) // CGPointFromString on iOS
}
Run Code Online (Sandbox Code Playgroud)

在最近的一次Swift更新中有变化吗?是否可以采用StringLiteralConvertible作为枚举?

macos ios swift

1
推荐指数
1
解决办法
919
查看次数

标签 统计

ios ×1

macos ×1

swift ×1