菜鸟教程小白 发表于 2022-12-11 18:38:52

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


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

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

<pre><code>class Global {
    let array = [&#34;item1&#34;,&#34;item2&#34;,...,&#34;item1042&#34;]
}
</code></pre>

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

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

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

<p>实现这一目标的正确风格是什么?</p>

<p>如果这个问题已经得到解答,我深表歉意(似乎一般没有得到解答),但无论我找到什么答案,要么对我的理解水平来说太复杂,要么没有帮助。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>有很多方法可以在<code>单个应用 session </code>中<code>持久化数据</code>。但是,在所有这些中,我更喜欢在 <code>AppDelegate</code> 中创建一个变量,并使用 <code>shared instance</code> 在应用程序中使用它。
这样您就不需要创建单独的 <code>singleton</code> 或任何其他具有 <code>static</code> <code>variable</code> 或任何类型的 <code>global</的类</code> <code>变量</code>.</p>

<pre><code>@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate
{
    let array = [&#34;item1&#34;,&#34;item2&#34;,&#34;item1042&#34;]
    //....
}

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

<p>另外,如果你想在 <code>多个应用 session </code>中<code>持久化数据</code>,你可以使用 <code>UserDefaults</code>、<code>Core Data</code> 或 <code>文件系统</code>.</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在多个 swift 类中重用大型未更改数组而不使用全局变量,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/46142920/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/46142920/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在多个 swift 类中重用大型未更改数组而不使用全局变量