iOS - 用于跟踪全局设置的持久变量

时间:2015-02-15 04:37:56

标签: ios arrays swift struct

在一个应用程序中,我试图跟踪数组的哪个索引是当前索引。跟踪此信息非常重要,如果所选索引与已加载的索引相同,它将阻止冗余API调用。

我使用静态var创建了一个Struct来跟踪当前数组索引,但它似乎只保留应用程序的一个页面上的值。

我的应用有一个带有3个标签的标签栏。在选项卡1上,这工作正常,但是在选项卡2上,Struct var得到设置,但是如果我转到选项卡1或3然后回到2,它将返回-1(这是"默认"。)

我的结构是这样构建的:

struct currentDefault {
    static var cDefault:Int = -1
}

然后我在每个页面上创建它:

var setIndex = currentDefault.cDefault

我的检查功能在每页上看起来都相同:

override func viewWillAppear(animated:Bool) {
    var index = Load.defaultEnterprise("defaultEnterprise")
    if index != self.setIndex || self.setIndex == -1 {
        loadPlayerList()
        currentDefault.cDefault = index
    }
}

在上面的例子中,"索引"从用户的当前默认设置加载。 在初始页面上,setIndex将为-1,这很好,但在此之后,Struct的静态var应保存当前索引。

是否有更好的全局跟踪应用程序的所有页面之间的数组索引?如果一个Struct是要走的路,那么它在每个页面上的默认负载的原因是什么?

1 个答案:

答案 0 :(得分:0)

我通过以下方式开展工作:

我的结构:

struct currentDefault {
    static var playlistDefault:Int = -1
    static var playerDefault:Int = -1
}

我的viewWillAppear(每个标签上的不同struct var):

override func viewWillAppear(animated:Bool) {
    var index = Load.defaultEnterprise("defaultEnterprise")
    if index != currentDefault.playlistDefault {
        loadPlaylists()
        currentDefault.playlistDefault = index
    }
}

我删除了" var setIndex"从每个页面开始,因为我认为创建一个var引用具有默认值的Struct var可以继承它的默认值而不是它的更新值。但不完全确定。

无论如何,那是有用的。