Ios TabBar项目-tableview中的核心数据

Ios TabBar项目-tableview中的核心数据,ios,uitableview,core-data,uiviewcontroller,Ios,Uitableview,Core Data,Uiviewcontroller,像很多在我之前的人一样——我以“我对iOS编程还不熟悉”开始这一步;我到处问了几个问题 我有一个项目,我正在使用tabbar项目进行设置 我在底部有4个标签,其中一个是“编辑”,当用户点击时,他们会显示一个带有月份选择器的视图。当他们选择月份时,屏幕应加载一个tableview,其中填充了coredata中适当的月份条目 我在我的应用程序委托中设置了coredata,但我很好奇如何将这些信息深入到应用程序的tableview中 我已经完成了,并且在做主细节项目时能够让它工作,但这是一个tabba

像很多在我之前的人一样——我以“我对iOS编程还不熟悉”开始这一步;我到处问了几个问题

我有一个项目,我正在使用tabbar项目进行设置

我在底部有4个标签,其中一个是“编辑”,当用户点击时,他们会显示一个带有月份选择器的视图。当他们选择月份时,屏幕应加载一个tableview,其中填充了coredata中适当的月份条目

我在我的应用程序委托中设置了coredata,但我很好奇如何将这些信息深入到应用程序的tableview中

我已经完成了,并且在做主细节项目时能够让它工作,但这是一个tabbar项目,我正在其中工作

我的大部分版面都在使用故事板

当我尝试在viewDidLoad中使用此行时,不断出现错误:

NSManagedObjectContext *context = [self managedObjectContext];
错误是:

 No visible @interface for 'myEditPageViewController' declares the selector 'managedObjectContext'
我的进口是:

#import "myEditPageViewController.h"
#import "myAppDelegate.h"
#import "CoreData/CoreData.h"
我当前的viewDidLoad看起来是这样的(这是我在网上挖掘得到的——记住,我对这东西很陌生):


有什么想法吗?我正试图将该教程应用到我的应用程序中,但由于它不是主细节,因此还涉及其他视图。只是想让它显示coredata信息

首先,在您的
myEditPageViewController.h

@property(nonatomic, strong) NSManagedObjectContext *context;
现在将viewDidLoad中的代码替换为:

if (self.context == nil)
{
self.context = [(myAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init];
NSManagedObjectContext *context = [self context]; //Not necessary
如果不起作用,请告诉我。正如我所提到的,您不需要写最后一行,因为您可以直接引用
self.context
,而不是将其分配给其他变量

“myEditPageViewController的@interface不可见声明选择器
managedObjectContext

选择器是方法的另一个术语。错误消息表示在
myEditPageViewController
类中,没有名为
managedObjectContext
的方法

要解释您复制和粘贴的代码

self.context = [self context];
//将self.context(a
@property NSManagedObjectContext*context
的值设置为该属性的getter

//这是多余的,因为
self.context
等于
self-context]
我建议你查阅关于setter和getter的教程,它们非常有用

if (self.context == nil)
{
self.context = [(myAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
}
//这段代码很有用,它将NSManagedObjectContext设置为存储在AppDelegate中的managedObjectContext

//说到错误本身,这一行是多余的。 NSManagedObjectContext*上下文=[self-managedObjectContext];
这将创建一个名为
context
的本地实例变量,您真的应该只使用
self.context

的存储的
@属性
,谢谢您的解释-它真的很有帮助。显然,我要对这些事情有很好的理解还有很长的路要走-但是getter/setter应该会有帮助。我的背景d是编程,我通常会跳进项目中,在我把事情做好之前,我都是按部就班的。:)你的解释帮了我很大的忙。Achievelimitless本质上说了同样的话——但更为浓缩。我希望我能将这两个答案都标记为可接受的答案。你真的不应该调用应用程序委托来获取托管对象上下文;相反,你应该把它一堆一堆地传下去。谢天谢地,苹果终于将这一建议写入了他们的文档@Abizern。。谢谢你的好意。我完全没有意识到这一点。我对此有些怀疑。我也发过帖子。如果可能,请解释。谢谢你谢谢-我希望我能记下两个答案-因为你的答案和上面的一样。他在解释某些事情为什么会这样做时,用了更广泛的篇幅,所以我给了他答案。然而,我给了你我可以给你的一票,因为你的答案是简洁的和好的;相反,你应该把它一堆一堆地传下去。谢天谢地,苹果终于将这一建议写入了他们的文档中
if (self.context == nil)
{
self.context = [(myAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
}