如何仅在nil时设置静态属性?

时间:2017-07-18 14:44:05

标签: swift

我希望能够调用属性ConferenceNumberDirectory.att,如果数字目录/数组存在,我们将返回它,如果不是,我们将解析该条目。

///Builds, stores, retrieves and queries conference number directories.
class ConferenceNumberDirectory {

static var att: [ConferenceNumber] = {
    build(from: ConferenceNumberDirectory.jsonArray)
    print("Am I lazy!?")
    return ConferenceNumberDirectory.att
}()

build是一个修改ConferenceNumberDirectory.att的函数。当我尝试调用它时,模拟器似乎卡住,内存使用量稳步上升,直到我停止运行。 我有办法使用计算属性吗?

1 个答案:

答案 0 :(得分:4)

您正在创建一个懒惰的计算属性。只需:

class ConferenceNumberDirectory {

static var att: [ConferenceNumber] = {
    let result = build(from: ConferenceNumberDirectory.jsonArray)
    print("Am I lazy!?")
    return result
}()

更改build方法会返回一个值,而不是尝试设置att