0

我是 xcode 的新手,现在我已经为此苦苦挣扎了 5 天,我的脑袋几乎要炸飞了,因为我知道这一定很简单!

我有一个带有 2 个标签的基于标签栏的 iPhone 应用程序。在第一个上,我想创建新项目并将它们存储在我已经创建的“存储库”NSObject 类中的 NSMutableArray 中。

这个 Repository 类具有 add、remove、update 和 fetchAll Items 等方法。最后一个是返回存储在 NSMUtable 数组中的所有项目的方法。

还有一个 NSObject "Item" 类表示什么是 Item。

在第二个选项卡上,我有一个表格视图控制器,我想用第一个选项卡上创建的项目填充它,这些项目已存储在“存储库”类中。

我的问题是:

  • 我必须在进程的某个地方分配初始化我的存储库,以便我可以调用“存储库”类方法。问题是,如果我在第一个选项卡控制器上分配初始化存储库,每次加载第一个选项卡时,它都会再次分配初始化存储库,并且那里的项目刚刚消失。第二个选项卡也是如此。

那么我应该在哪里分配初始化我的存储库,以便我可以在第一个选项卡视图中调用“add”方法并在第二个选项卡视图(即表视图)中调用“delete”和“fetchAll”方法并保证我正在处理相同的存储库数据?

提前致谢

4

3 回答 3

0

我必须在进程的某个地方分配初始化我的存储库,以便我可以调用“存储库”类方法。问题是,如果我在第一个选项卡控制器上分配初始化存储库,每次加载第一个选项卡时,它都会再次分配初始化存储库,并且那里的项目刚刚消失。第二个选项卡也是如此。

看来您可能需要一个单身人士。

单例是一个唯一的全局对象,您可以从应用程序的任何位置访问它。在第一次访问时,它也会被创建。在任何后续访问中,将返回现有对象。

看看这篇文章以获得一个很好的教程

于 2012-11-08T16:26:48.230 回答
0

听起来您可以在应用程序委托中为您的“存储库”类提供一个属性,并在应用程序完成启动后立即将其初始化。然后,您将能够从代码的任何部分访问它。

或者,您可以继承 UITabBarViewController 并在控制器的 viewDidLoad 方法中初始化“存储库”对象。

于 2012-11-08T16:30:44.050 回答
0

似乎您在传递数据方面遇到了问题。正如@sergio 建议的那样,您可以使用单例。Utility此外,为所有全局方法使用一个类也是一个好主意。因此,您可以在另一个选项卡中更新您的变量,当您在它们之间切换时,值将被反映。

于 2012-11-08T16:37:13.990 回答