【问题标题】:In swift , how to implement a variable in the app delegate, in order to retrieve it everywhere in the app?在 swift 中,如何在应用程序委托中实现一个变量,以便在应用程序的任何地方检索它?
【发布时间】:2020-11-21 23:43:11
【问题描述】:

在 swift 中,如何在应用程序委托中创建一个变量以便在应用程序的任何地方检索它? 我不是在说 NSManagedObject

我知道它的开头是:

let appDelegate = UIApplication.shared.delegate as! AppDelegate

我有一个类 Personne

class Personne {
var One: String
var Two: Float
}

和另一个类来创建一个单例:

class PersonneController {
var shared = Personne()

在我的应用程序中,我创建了一个这样的实例:

var personne = Personne()

所以每个变量都在检索

personne.shared.myvariable

如何将 personne 放入应用委托中,以便从任何地方检索它?

【问题讨论】:

  • “为了在应用程序的任何地方检索它”虽然很诱人,但您绝对不希望这样。可以从任何地方访问的可变内容可以从任何地方更改,这意味着您无法轻松读取任何访问该值的代码。您的本地推理使您认为某些代码应该以一种方式运行,但它可以做完全其他的事情,因为其他模块可以在您的脚下访问和更改该全局值。它很容易成为一场噩梦
  • @Alexander-ReinstateMonica 总的来说你是对的,只是我采用的解决方案不同。这是很好地解释它的链接。 link
  • @Monica 你真的很亲密。您正在寻找的内容称为 Singleton 并检查此 post 以及

标签: swift appdelegate


【解决方案1】:

1 .在 AppDelegate 中创建“Personne”类的实例 ( var persnee = Personne())

2 。在您的 AppDelegate 中创建一个函数,该函数将返回 AppDelegate 的实例

类 func appDelegate() -> AppDelegate {

返回 UIApplication.shared.delegate 为!应用代理

}

3 .你可以这样调用

AppDelegate.appDelegate()。坚持

【讨论】:

    【解决方案2】:

    类内

    class AppDelegate..... {
      var name:String?
    }
    

    然后

    let appDelegate = UIApplication.shared.delegate as! AppDelegate 
    print(appDelegate.name)
    

    但是为此最好制作一个像这样的单例类

    class Service {
      static let shared = Service()
      var name:String?
    }
    

    然后

    print(Service.shared.name)
    

    甚至将其设为全局变量

    【讨论】:

      【解决方案3】:
      let appDelegate = UIApplication.shared.delegate as! AppDelegate
      let aVariable = appDelegate.blabla
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-12
        • 1970-01-01
        相关资源
        最近更新 更多