【问题标题】:iOS - Persistent Variable to Track Global SettingiOS - 跟踪全局设置的持久变量
【发布时间】:2015-04-15 21:05:27
【问题描述】:

在我正在制作的应用程序中,我试图跟踪数组的哪个索引是当前索引。跟踪此信息很重要,如果所选索引与已加载的索引相同,它将防止多余的 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 应该保存当前索引。

有没有更好的全局跟踪应用程序所有页面之间的数组索引?如果一个结构是要走的路,有什么理由让它在每个页面加载时默认?

【问题讨论】:

    标签: ios arrays swift struct


    【解决方案1】:

    我通过执行以下操作使其正常工作:

    我的结构:

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

    我的 viewWillAppear(每个选项卡上的不同结构变量):

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

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

    无论如何,这就是有效的。

    【讨论】:

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