类定义中的可选变量

时间:2017-04-28 15:11:26

标签: swift optional

课程定义中的

选项

我有一个' mastermodel'从我的大多数模型继承,所以他们可以有配置常量

class MasterModel {

    static let apiKey = (drop.config["app","thinx-api-key"]?.string)!
    static let baseURL = (drop.config["app","base-URL"]?.string )!

}

注意力量展开:( 在这种情况下,它并不是一个非常大的问题,因为程序在没有这些常数的情况下不会开始,但无论如何我还想要清理它。

保护语句只能在函数中使用,而不能在类定义中使用。使用错误捕获定义这些常量的正确方法是什么

2 个答案:

答案 0 :(得分:2)

您可以为它们分配计算闭包以检测配置错误

class MasterModel 
{

  static let apiKey:String  = { 
     if let result = drop.config["app","thinx-api-key"]?.string 
     { return result }
     print("MasterModel.apiKey error, missing app/thinx-api-key")
     return ""
  }()  // the () here makes the closure execute and return the value

  // ...
}

答案 1 :(得分:0)

如果您希望程序在实际使用该属性时崩溃,则可以使用计算/惰性程序:

class MasterModel {

    static var apiKey: String {
        get {
            return drop.config["app","thinx-api-key"]?.string)!
        }
    }
    ...

}

如果在drop成功初始化之前调用静态初始化程序,这可能很有用。