Поделиться переменными в Playground

У меня есть открытый класс с переменными, объявленными в исходном файле. Я пытаюсь установить эти переменные на странице 1 (из книги о детской площадке) для использования на странице 2. В данный момент я вижу класс, но он не позволяет мне получить доступ к переменным, даже если я объявляю их как публичные.

Data.swift

 public class GlobalVars {
       public var progress = Float()
       public var didComplete = Bool()

}

Contents.swift

GlobalVar().progress = 1

Я также попробовал это

Data.swift

 public class GlobalVars {
       public var progress:Float?
       public var didComplete;Bool?

    public init() progress:Float? = nil, didComplete:Bool? = nil {
    self.progress = progress
    self.didComplete = didComplete
    }

}

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

1 ответ

Используйте шаблон синглтона, чтобы иметь возможность доступа к общим переменным. Вот код, который будет работать в вашем случае. Добавьте класс GlobalClass в источник

     import Foundation
   // GlobalVars.swift has to be in source files     
        public class GlobalVars {
           public var progress:Float = 0.0
           public var didComplete:Bool = true
           public static let sharedInstance = GlobalVars()
            private init() {}
        }

И на вашей странице вы можете использовать его после этого.

import UIKit

GlobalVars.sharedInstance.progress = 1
GlobalVars.sharedInstance.didComplete = false
print(GlobalVars.sharedInstance.progress)
print(GlobalVars.sharedInstance.didComplete)

Я только что проверил это, и это работает

Другие вопросы по тегам