如何使用swift 4.2在泛型类中创建Singleton?

时间:2019-03-23 10:07:48

标签: ios swift4.2

我一直在尝试将单例类转换为泛型。由于swift不支持通用类Singleton中的存储属性,因此无法实现。我尝试了所有已知的可能解决方案,但没有任何效果。与该主题相关的其他Stackoverflow答案也无济于事。有人可以帮助我走上正确的道路吗?预先感谢。

我在下面添加了示例代码。

    class SingleTonClass<T: Equatable & RawRepresentable>: NSObject where T.RawValue == String {


        private var catlog: CatlogModelClass<T>?
        private var catlogArray = [CatlogModelClass<T>]()


       **// This stored property Now has to be changed to support Generic** 
        private static var shared : SingleTonClass = {
            return SingleTonClass()
        }()

        // Accessor for Singleton
        static func sharedInstance() -> SingleTonClass {
           return shared
        }

        private override init () {}
    }

1 个答案:

答案 0 :(得分:0)

如果您希望它不是单个对象,则需要创建一个公共构造函数。

您应该将catalog和catalogArray传递到构造函数中,并初始化self.catalog和self.catalogArray。然后,您需要删除该类的静态共享实例,因为新的设置将需要您创建该类的实例。