Как создать Singleton в универсальном классе, используя Swift 4.2? - PullRequest
0 голосов
/ 23 марта 2019

Я пытался преобразовать одноэлементный класс в общий. Поскольку 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 голосов
/ 23 марта 2019

Если вы хотите, чтобы он не был одноэлементным, вам нужно создать открытый конструктор.

Вы должны передать в каталог и catalogArray конструктор и инициализировать self.catalog и self.catalogArray.Затем вам нужно удалить статический общий экземпляр класса, потому что ваша новая установка потребует от вас создать его экземпляр.

...