TabBar项目 - tableview中的核心数据

时间:2014-01-10 14:09:36

标签: ios uitableview core-data uiviewcontroller

像许多来到我面前的人一样 - 我是以“我是iOS编程新手”开始的;我在这里和那里问了几个问题。

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

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

我在我的应用代表中设置了coredata - 但我很好奇我将如何在应用程序中更深入地获取信息到我的tableview中?

我已经完成了THIS TUTORIAL on coredata并且能够在执行master-detail项目时让它工作,但这是我正在进行的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看起来像这样(我从一些在线挖掘中得到的 - 记住,我对这些东西很新):

self.context = [self context];
if (self.context == nil)
{
self.context = [(myAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init];
NSManagedObjectContext *context = [self managedObjectContext];

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

2 个答案:

答案 0 :(得分:1)

首先,在myEditPageViewController.h

中添加以下代码行
@property(nonatomic, strong) NSManagedObjectContext *context;

现在用view:

替换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而不是将其分配给其他变量

答案 1 :(得分:1)

关于错误

myEditPageViewController没有可见的@interface声明选择器managedObjectContext

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

解释您复制并粘贴的代码......

self.context = [self context];

//将self.context的值(@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 * context = [self managedObjectContext]; 这将创建一个名为context的本地实例变量,您真的应该使用存储的@property self.context