gpt4 book ai didi

iphone - 将 UITabBarController 与内部 UINavigationController 一起使用时如何共享 ManagedObjectContext

转载 作者:行者123 更新时间:2023-12-03 19:05:06 24 4
gpt4 key购买 nike

我有一个架构问题。我的应用程序在应用程序窗口中使用 TabBarController。 ApplicationDelegate 创建了 ManagedObjectContext,尽管它实际上并不需要它。

TabBarController中的每个ViewController都是一个NavigationViewController。每个 NavigationController 的第一个 View Controller 是我的自定义 View 。一切都是通过 Interface Builder 创建和链接的。

现在,如何以正确的方式传递 ManagedObjectContext?实际上,我需要我的 View 尽快加载数据,以便当用户选择选项卡或浏览导航 Controller 时,数据已经存在。

所以我的问题是:

  1. 如何正确传递上下文?
  2. 我应该什么时候获取我的数据,即使用哪种方法? “viewDidLoad”还是“viewDidAppear”?

感谢您的所有想法!

最佳答案

您通常应该避免从应用程序委托(delegate)获取共享对象。它使得它的行为太像全局变量,并且存在与之相关的一大堆问题。单例只是奇特的全局变量,因此除非确实必要,否则应该避免使用它们。

我会向每个 View Controller 添加一个 managedObjectContext 属性,并在创建它们时分配该属性。这样,您的 View Controller 就不会与应用程序委托(delegate)建立紧密的联系。

至于什么时候获取数据,你应该懒惰地去做。 Core Data 确实很快,所以我会等到 viewWillAppear: 来进行提取。如果等到viewDidAppear:, View 已经出现在屏幕上,并且在数据加载时会有闪烁。但请注意,每次 View 变得可见时都会调用 viewWillAppear: (例如,当用户点击导航栏上的后退按钮或模态视图 Controller 被关闭时),因此您可能想要跟踪您是否已经加载数据并在后续调用中跳过加载。

关于iphone - 将 UITabBarController 与内部 UINavigationController 一起使用时如何共享 ManagedObjectContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4099916/

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