我首先要说的是我是Objective-C和iPhone的新手,但我有C ++,Java,AS3等历史......
我正在尝试构建某种RSS阅读器,并且我的所有提要都有一个数组。如何将新Feed保存到此阵列的最佳方法是什么?我有一个基于导航的项目,我有一个添加按钮,它将viewController推到顶部以输入新的feed URL。
但是如何将其保存回我的其他ViewController中的数组?我是否需要更多地研究SQLLite?或者设置一些代表?还是核心数据?
答案 0 :(得分:1)
我自己更喜欢单例方法,但Apple推荐依赖注入,即根据需要将数据模型对象从视图控制器传递到视图控制器。
如果您使用Xcode中的模板导航项目查看Core Data,您可以看到它是如何工作的。 managedObject上下文是数据模型,它由应用程序委托初始化并保存。然后,您可以通过两种方式访问它:
(1)由于Application实例本身是一个单例,您可以询问它的委托,然后向委托询问其managedObjectContest属性。因此,在视图控制器中,您将拥有一个属性managedObjectContext,其定义的getter定义如下:
(NSManagedObjectContext *) managedObjectContext{
if (managedObjectContext !=nil){
return managedObjectContext;
}
// this is basically applicationObject.delegate.managedObjectContext
self.managedObjectContext=[[[NSApplication sharedApplication] delegate] managedObjectContext];
return managedObjectContext
}
(2)或者,只要视图打开另一个视图,它就会将下一个视图的managedObjectContext属性设置为它自己的视图。这样每个视图都会打开一个上下文。如果由于某种原因实际上有多个数据对象,这将非常有用。
如果您只是使用数组或自定义数据模型类,只需将其名称替换为上述代码中的managedObjectContext。
答案 1 :(得分:0)
查看this问题。我建议使用单例类并创建一些侦听器模式,以便在数据发生更改时发出信号(或者只是在视图变为可见之前重新加载)。
答案 2 :(得分:0)
您可能希望使用单例
将Feed项目存储在内存中类似于正在使用的内容:Singleton shared data source in Objective-C