菜鸟教程小白 发表于 2022-12-13 08:24:56

ios - iOS 如何与多个 View Controller 共享一个数组


                                            <p><p>我很重视这个网站上的意见,想知道大家的想法。我有一个包含数组的应用程序。该数组用于多个 ViewController 。目前,每次打开一个 ViewController 时,我都会创建数组。我不相信这是最好的做法。我之前使用过 NSUserDefaults 和单例,但我对你的任何想法、plist 等持开放态度。我正在寻找让事情快速高效地运行的方法。 </p>

<p>另外,我希望用户能够重新排列数组。假设它以 alpha 顺序开始。但是用户发现以其他方式重新排列它会更好。我知道该怎么做,重新排列,但我想知道将原始数组保存在哪里,以便用户可以将顺序重置为原始 alpha 顺序。</p>

<p>所以我想这个问题是双重的。在哪里存储原始数组,以及如何最好地在整个应用程序中访问更改后的数组。非常感谢您的帮助。</p>

<p>编辑#1</p>

<p>我要感谢大家的评论和回答!我觉得这就是社区的意义所在。学习新的和不同的技术很棒。我将尝试尝试所有答案(看看我是否可以真正编程),看看哪一个最适合我。再次感谢这次精彩的对话。</p>

<p>编辑#2</p>

<p>我最终都做了一点,如果没有您的所有评论和回答,我永远不会这样做。我在应用程序委托(delegate)中创建了数组并将其保存在用户默认值中。它不是一个基本数组,它是一个自定义对象数组,所以我不得不使用一些 NSCoding。它也不仅仅是 alpha 排序的,所以我制作了一个可以操作的数组。再次感谢所有伟大的洞察力!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您可以在 AppDelegate 中创建它的单例实例。
为 AppDelegate.h 中的数组创建一个 @property,然后将该 header 导入您的其他 viewController。 </p>

<p>初始化并将数组存储到“didLoadWithOptions”中的 appDelegate 的数组 @property。您可以创建自定义 getter/setter 以允许操作。实际数据可能来自外部 XML、JSON 或 plist 文件,但要进行测试,您只需在 AppDelegate 中硬编码一个数组即可。 </p>

<p>每个 viewController 都需要有一个对 appDelegate 的引用,使用描述的方法 <a href="https://stackoverflow.com/questions/5054251/appdelegate-shared-instance-delegate" rel="noreferrer noopener nofollow">in this answer</a> .然后,您可以像访问任何其他属性一样访问 1 数组,
    <code>NSArray *dataInVC = myAppDelegate.singletonArray;</code>(...或者如果你想添加/更改/操作,可以使用 NSMutableArray)。</p>

<p>...或者,只需为您的数据创建一个单独的类,并为其创建一个单例版本,以便您以后可以在必要时更轻松地重构。如何做到这一点的例子<a href="https://stackoverflow.com/questions/5381085/how-to-create-singleton-class-in-objective-c" rel="noreferrer noopener nofollow">in this answer</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - iOS 如何与多个 ViewController 共享一个数组,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/24613918/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/24613918/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - iOS 如何与多个 View Controller 共享一个数组