如何在 Swift 中创建与 Generic 共存的单个类



>我有一个这样的单类:

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

最新更新