Поделиться переменными в 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)
Я только что проверил это, и это работает