我是xcode的新手,我现在已经挣扎了5天了,我的脑子几乎要吹走了,因为我知道这一定很简单!
我有一个基于标签栏的iphone应用程序,带有2个标签。 在第一个我要创建新项目并将它们存储在我已经创建的“存储库”NSObject类中的NSMutableArray中。
此Repository类具有add,remove,update和fetchAll Items等方法。最后一个是返回存储在NSMUtable Array中的所有项的方法。
还有一个NSObject“Item”类,它代表什么是Item。
在第二个选项卡上,我有一个表视图控制器,我想填充第一个选项卡上创建的项目,这些项目已存储在“存储库”类中。
我的问题是:
那么我应该在哪里分配init我的存储库,以便我可以在第一个选项卡视图中调用“add”方法,并在第二个选项卡视图(即表视图)中调用“delete”和“fetchAll”方法保证我在同一个存储库数据上行动?
提前致谢
答案 0 :(得分:0)
我必须在进程的某个地方分配init我的存储库,以便我可以调用"存储库"类方法。问题是,如果我在第一个选项卡控制器上分配初始化存储库,每次加载第一个选项卡时,它将再次分配初始化存储库以及刚刚消失的项目。第二个标签也是如此。
似乎你可能需要一个单身人士。
单身人士是一个独特的全球对象,您可以从应用中的任何位置进行访问。在第一次访问时,它也将被创建。在任何后续访问中,将返回现有对象。
答案 1 :(得分:0)
听起来你可以在你的app委托中拥有你的'Repository'类的属性,并在应用程序完成启动后立即将其初始化。然后,您就可以从代码的任何部分访问它。
或者,你可以继承UITabBarViewController并在控制器的viewDidLoad方法中初始化'Repository'对象。
答案 2 :(得分:0)
似乎您在传递数据时遇到问题。就像@sergio建议你可以使用Singleton一样。
同样,对所有全局方法使用Utility
类也是一个好主意。
因此,您可以在另一个选项卡中更新变量,并在切换它们时反映值。