gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:42:48 24 4
gpt4 key购买 nike

我很重视这个网站上的意见,想知道你们的想法。我有一个包含数组的应用程序。该数组用于多个 View Controller 。目前,每次打开一个 View Controller 时,我都会创建数组。我不认为这是最好的做法。我以前使用过 NSUserDefaults 和单例,但我对你的任何想法、plist 等持开放态度。我希望让事情运行得更快、更高效。

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

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

编辑#1

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

编辑#2

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

最佳答案

您可以在 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 - 如何与多个 View Controller iOS 共享一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24613918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com