• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 在多个 swift 类中重用大型未更改数组而不使用全局变量

[复制链接]
菜鸟教程小白 发表于 2022-12-11 18:38:52 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我对 iOS 开发还比较陌生,但这是一个我一直在讨论的问题。在我制作的最后一个应用程序中,一个高中教科书定义审查应用程序,我有大量从未更改过的文本。由于不赞成使用全局变量,我寻找了诸如 Singletons 之类的替代方案(这些将如何更优雅让我难以理解,感觉多余)、prepareForSegue(解决了问题,但感觉必须有更好的方法)和永久存储(没有意义,因为数据永远不会改变,但它提供了一个中央存储库)。天真地,我选择了后者,实现了一个 plist,降低了性能。

我对这个问题使用单例的解释(如果我的问题源于误解):

class Global {
    let array = ["item1","item2",...,"item1042"]
}

现在我可以通过 Global.array 从其他类访问 array。我的数组实际上是一个 3 维数组,但是我看不出这会如何改变问题(本来希望创建一个有很多实例的类,但为了便于阅读,这感觉就像使问题进一步复杂化)。

除了使用 coreData,这似乎又有点矫枉过正,我已经束手无策了。

我想在我的所有类(class)中使用一个单一的、未更改的数组/字典,最好不要将其复制到每个类(class)中。

实现这一目标的正确风格是什么?

如果这个问题已经得到解答,我深表歉意(似乎一般没有得到解答),但无论我找到什么答案,要么对我的理解水平来说太复杂,要么没有帮助。



Best Answer-推荐答案


有很多方法可以在单个应用 session 持久化数据。但是,在所有这些中,我更喜欢在 AppDelegate 中创建一个变量,并使用 shared instance 在应用程序中使用它。 这样您就不需要创建单独的 singleton 或任何其他具有 static variable 或任何类型的 global 变量.

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate
{
    let array = ["item1","item2","item1042"]
    //....
}

class ViewController: UIViewController
{
    override func viewDidLoad()
    {
        super.viewDidLoad()
        print((UIApplication.shared.delegate as? AppDelegate)?.array)
    }
}

另外,如果你想在 多个应用 session 持久化数据,你可以使用 UserDefaultsCore Data文件系统.

关于ios - 在多个 swift 类中重用大型未更改数组而不使用全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46142920/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap