根据您来自的类(Swift)为变量赋予不同的值
Posted
技术标签:
【中文标题】根据您来自的类(Swift)为变量赋予不同的值【英文标题】:Attribute a different value to a variable depending on the class from which you are coming (Swift) 【发布时间】:2017-11-18 12:41:39 【问题描述】:在我的HomeClass
中有一个static var globalLimit: Int = 0
,我必须在其他类中传递他的值,这是我的准备函数
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
if let vc = segue.destination as? SelectClass
vc.limit = Int(steppeR.value)
HomeClass.globalLimit = Int(steppeR.value)
HomeClass.globalRadiusLimit = Int(stepperRadius.value)
else if let np = segue.destination as? CourseClass2
np.categories = filteredList
np.numberPlaces = filteredList.count
np.radius = Int(stepperRadius.value)
现在的问题是,在我什至可以从SelectClass
到达的CourseClass2
课程中,我有var numberPlaces = 0
,他的价值是
override func viewDidLoad()
super.viewDidLoad()
numberPlaces = HomeClass.globalLimit
但是就像你在我的准备函数中看到的那样,当我直接从 HomeClass
进入 CourseClass2
时,我想要 numberPlaces = filteredList.count
的值,但它当然不起作用,因为它与 numberPlaces = HomeClass.globalLimit
在CourseClass2
的 viewDidload,那么我该如何解决这个问题呢?
【问题讨论】:
只需将 var numberPlaces = HomeClass.globalLimit 声明为存储属性并从 viewDidLoad 中删除其初始化 我该怎么做? 您在 CourseClass2 中声明 numberPlaces 的位置,只需为其赋值即可。这将是它的默认值,稍后可以更改,这就是您将在 HomeClass 中执行的操作 我试过了,但是不行 不要将numberOfPlaces
设置为您的viewDidLoad
。使该值的设置成为调用 viewController
的责任。
【参考方案1】:
这样试试:
将您的 numberPlaces 变量设置为可选:
var numberPlaces: Int?
然后检查是否加载了视图,如果它为 nil:
override func viewDidLoad()
super.viewDidLoad()
if numberPlaces == nil
numberPlaces = HomeClass.globalLimit
【讨论】:
以上是关于根据您来自的类(Swift)为变量赋予不同的值的主要内容,如果未能解决你的问题,请参考以下文章
是否可以根据从 Swift 中的 UIViewController 继承的类中的另一个来初始化变量?
将 Firebase Firestore 文档值分配给 swift 变量 [重复]