Ios tableView和normal视图(相同的数据对象)

Ios tableView和normal视图(相同的数据对象),ios,iphone,object,share,nsfetchedresultscontroller,Ios,Iphone,Object,Share,Nsfetchedresultscontroller,我不知道如何在两个选项卡栏项之间共享相同的数据。 一个选项卡使用nsfetchedresultscontroller,另一个表只是一个普通视图,应该使用与我的fetchedresultscontroller相同的数据 如果我有两个法线视图,我会将我的对象设置为单例,并让tableview和normal视图使用相同的数据 但现在我有了一个fetchresultscontroller和一个普通视图。我正在考虑为我的普通视图使用另一个fetchedresultscontroller,因此我拥有了所有的

我不知道如何在两个选项卡栏项之间共享相同的数据。 一个选项卡使用nsfetchedresultscontroller,另一个表只是一个普通视图,应该使用与我的fetchedresultscontroller相同的数据

如果我有两个法线视图,我会将我的对象设置为单例,并让tableview和normal视图使用相同的数据

但现在我有了一个fetchresultscontroller和一个普通视图。我正在考虑为我的普通视图使用另一个fetchedresultscontroller,因此我拥有了所有的功能,如fetch缓存、通知等

我知道fetchresultscontroller应该用于tableview,但我想我也可以用于非tableview


有人知道我该怎么做?我找不到苹果公司关于这个问题的文档。

如果你遵循MVC风格,你的数据应该与你的视图控制器或视图无关。如果您的数据仅在一个viewController中可用,并且您不想将其提取到自己的类中,那么请在viewController中提供可由另一个viewController调用以获取数据的方法

例如,有如下方法:

- (NSString) getNameOfSelectedUserAtIndex:(int) index;
- (int) getCountOfSelectedUsers;
- (NSSArray) getResults;
然后从其他viewController中调用:

string = [fetchedresultscontroller getNameOfSelectedUserAtIndex:i];
count = [fetchedresultscontroller getCountOfSelectedUsers];
array = [fetchedresultscontroller getResults];
您必须确保将fetchedresultscontroller作为实例变量添加到其他控件中
viewController,并将其设置在其viewDidLoad中。

感谢您的帮助!,但我必须在appDelegate中创建一个属性,该属性带有指向此控制器的指针,才能访问nsfetchedresultscontroller,因为这两个控制器位于各自的选项卡栏中。我喜欢您的解决方案来获取数据,但我将如何处理通知。如果我的fetchedresultscontroller接收到更新通知,我的正常视图也应该接收到这些数据,对此有何想法?我不确定我是否理解您在做什么。一种方法是在appDelegate中将数据作为属性。然后,所有控制器都会调用,如上所述,但不是fetchedresultscontroller,而是调用appDelegate。至于通知,我有一个主视图控制器,它在应用程序退出时请求通知并处理保存数据。我有时会在appDelegate或数据模型类中收到该通知。这完全取决于我想做什么。换句话说,我认为您不会被迫使用特定的viewcontroller进行通知。