>我有一个这样的单类:
class Single {
static let sharedInstance: Single = Single()
...
}
但是我想在此类中使用泛型,如下所示:
class Single<T: Hashable> {
static let sharedInstance: Single = Single()
var dic: [T: Any] = [:] // Here use the Generic
}
我从Xcode得到了这个结果
泛型类型不支持静态存储属性
我已经在堆栈溢出中搜索了此错误,但是所有答案都不适合我。像这个(如何在 swift 中定义泛型类中的静态常量?
我该如何解决这个问题?
可以使用静态计算属性声明泛型类型,如下所示:
class Single<T: Hashable> {
static var sharedInstance: Single? {
if self.sharedInstance != nil {
return self.sharedInstance
} else {
return Single()
}
}
var dic: [T: Any] = [:]
}
我认为你只是希望一个单例能够在你的字典中存储任何可哈希键?如果是这样,请执行以下操作:
class Single {
static let sharedInstance: Single = Single()
var dic: [AnyHashable : Any] = [:]
}
Single.sharedInstance.dic["Grimxn"] = 1
Single.sharedInstance.dic[1] = "Grimxn"
Single.sharedInstance.dic // [1: "Grimxn", "Grimxn": 1] as required