【发布时间】:2021-08-30 13:13:24
【问题描述】:
这类似于here 之前提出的问题。
然而,在该问题的答案中,建议从 Swift 3.1 开始,应该可以使用 Array where 语法扩展特定类型。
我正在尝试使用 Array where 进行扩展,以将我的字节数组转换为 Ascii 字符串,如下所示:
extension Array where Element == UInt8 {
public static func ToAsciiString() -> String {
if let result = String(bytes: self, encoding: .ascii) {
return result
}
else
{
// TODO: Something more appropriate like throwing an error?
return "ERROR"
}
}
}
但是,这会产生两个编译器错误,并显示以下消息:
Initializer 'init(bytes:encoding:)' 要求类型 'Array
.Type.Element' 和 'UInt8' 等价 类型'Array
.Type'不能符合'Sequence'
有可能做我想做的事吗?如果是这样,有人可以指出我哪里出错了吗?
【问题讨论】:
-
删除
static?是错字吗? -
更多的是复制/粘贴失败而不是拼写错误 - 在我尝试将其修改为扩展之前,它开始作为辅助类中的静态方法。
标签: swift