gpt4 book ai didi

ios - 在保留任何下载数据的同时在多个 View Controller 之间切换的最佳方法?

转载 作者:行者123 更新时间:2023-11-30 11:15:00 25 4
gpt4 key购买 nike

拥有多个 UIViewController 的最佳方法是什么,这些 UIViewController 可以从侧面菜单访问,而无需每次显示 View Controller 时重新下载任何数据?

例如,我有三个 View Controller ,一个是显示最近通知的主页,一个是显示最近文章的新闻页面,一个是包含图像集合的页面。加载每个 View Controller 时,将从远程服务器下载数据并显示 - 如果用户切换到另一个 View Controller 并再次返回,我希望立即显示先前下载的数据,而不必重新下载(直到 UIRefreshControl 被加载)使用或类似)。

在我的脑海中,我可以通过四种方式实现这一目标:

  1. 将数据存储在单例中,如果之前已下载过数据,则从中加载数据,但是,这似乎违背了我所见过的一般做法,而且似乎效率不高 - 特别是如果有很多数据和/或多 View Controller 。
  2. 使用基于侧边菜单而不是传统底部栏选择索引的 UITabBarController,如果侧边菜单上有 10-12 个项目,这会导致问题吗?
  3. 将数据缓存到磁盘(使用 NSCache 等)并根据需要实例化/解除每个 View Controller , View Controller 可以使用缓存的数据 - 内存中一次只有一个 View Controller 。
  4. 使用某种自定义的容器 View 来缓存 View Controller 并在需要时加载它们,感觉有点老套而且效率不高?

实现这一目标的最佳方法是什么?我看到的大多数教程只是展示如何连接/呈现 View Controller ,但我一直在努力寻找任何解释如何保留下载到它们上的数据的内容。

最佳答案

仅供引用。如果您的 ViewController 之一应该“显示最近的通知/文章”,那么缓存数据将不起作用,因为它可能不是最新的,除非您每次都从服务器拉取。 (除非最近的内容被推送,即使这样,如果您不每次都拉取,您也可能会遇到巨大的同步问题。)

也就是说,选项 1 和选项 3 实际上是相同的,唯一的区别在于保存信息的位置。

您不应该使用标签栏 Controller 。如果您无法使用 UISplitViewController 那么您应该制作自己的自定义容器 View Controller 。

至于缓存问题。我将为每个端点实现某种缓存机制。它可以存储在内存中或磁盘上,但我认为内存中更好,因为数据听起来相当不稳定。

设置它,以便当 View Controller 进行“网络”调用时,它使用的函数使用它提取的最后一个数据调用闭包,然后可以选择再次进行网络调用并使用新数据。这样,风险投资家将能够快速响应尽快获取数据,并且仍然会在出现的每个 View 中提取新数据。

关于ios - 在保留任何下载数据的同时在多个 View Controller 之间切换的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51825537/

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