【问题标题】:iOS Swift4 - reInitialize lazy variableiOS Swift4 - 重新初始化惰性变量
【发布时间】:2017-11-20 19:30:26
【问题描述】:

有没有办法根据当前语言重新初始化惰性变量?

lazy var localizableDictionary: NSDictionary! = {
    guard let path = Bundle.main.path(
        forResource: "Localizable",
        ofType: "strings",
        inDirectory: nil,
        forLocalization: Localizer.shared.currentLanguage)
    else {
        fatalError("Localizable file NOT found")
    }

    return NSDictionary(contentsOfFile: path)
}()

【问题讨论】:

    标签: ios swift lazy-initialization


    【解决方案1】:

    它是一个lazy var,显然它是一个变量,所以如果有必要的话,Swift 不会阻止你在任何时候修改它的值。

    你可以在任何时候简单地说,

    guard let path = Bundle.main.path(
        forResource: "Localizable",
        ofType: "strings",
        inDirectory: nil,
        forLocalization: Localizer.shared.currentLanguage)
        else {
            fatalError("Localizable file NOT found")
    }
    self.localizableDictionary = NSDictionary(contentsOfFile: path)
    

    仅供参考

    延迟初始化(有时也称为延迟实例化或延迟 loading) 是一种延迟创建对象或某些对象的技术 其他昂贵的过程,直到需要为止。在为 iOS 编程时, 这有助于确保您只使用所需的内存 你需要它。

    以上引用自http://mikebuss.com/2014/06/22/lazy-initialization-swift/复制

    如果您真的需要一个常量,请不要以为惰性 var 是常量,您会立即选择 let :)

    希望对你有帮助

    【讨论】:

    • @Anas Alhasani :很高兴我能帮上忙 :) 编码愉快 :)
    猜你喜欢
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    相关资源
    最近更新 更多