OGeek|极客世界-中国程序员成长平台

标题: ios - iOS 如何与多个 View Controller 共享一个数组 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 08:24
标题: ios - iOS 如何与多个 View Controller 共享一个数组

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

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

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

编辑#1

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

编辑#2

我最终都做了一点,如果没有您的所有评论和回答,我永远不会这样做。我在应用程序委托(delegate)中创建了数组并将其保存在用户默认值中。它不是一个基本数组,它是一个自定义对象数组,所以我不得不使用一些 NSCoding。它也不仅仅是 alpha 排序的,所以我制作了一个可以操作的数组。再次感谢所有伟大的洞察力!



Best Answer-推荐答案


您可以在 AppDelegate 中创建它的单例实例。 为 AppDelegate.h 中的数组创建一个 @property,然后将该 header 导入您的其他 viewController。

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

每个 viewController 都需要有一个对 appDelegate 的引用,使用描述的方法 in this answer .然后,您可以像访问任何其他属性一样访问 1 数组, NSArray *dataInVC = myAppDelegate.singletonArray;(...或者如果你想添加/更改/操作,可以使用 NSMutableArray)。

...或者,只需为您的数据创建一个单独的类,并为其创建一个单例版本,以便您以后可以在必要时更轻松地重构。如何做到这一点的例子in this answer

关于ios - iOS 如何与多个 View Controller 共享一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24613918/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4