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

问题描述 投票:0回答:1

我一直在尝试将单例类转换为泛型。由于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 () {}
    }
ios swift4.2
1个回答
0
投票

如果您希望它是非单例,则需要创建公共构造函数。

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

© www.soinside.com 2019 - 2024. All rights reserved.