访问其他类中的核心数据数据库

时间:2012-04-08 10:48:45

标签: ios core-data nsmanagedobjectcontext nsfetchedresultscontroller

我有一个从AppDelegate开始的核心数据库,我会这样做:

MasterViewController *masterViewController = [[[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil] autorelease];

masterViewController.managedObjectContext = self.managedObjectContext;

所以这样我可以在主视图中访问数据库,然后我想访问其他类中的核心数据,我这样做:

id delegateContext = [[UIApplication sharedApplication] delegate];

NSManagedObjectContext *context = [delegateContext managedObjectContext];

但是当我添加并访问信息时,当我尝试访问数据库的信息时,我在代码的各个部分有一些不好的Exc访问和其他错误,所以我想也许我已经用过了不好的方式核心数据,从其他类访问信息。

也许我必须释放delegatecontext?...我没有在我使用它的任何类中释放它,如果我已经释放它,我在哪里做它?

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

问题是您正在使用id类型的delegateContext而不是NSManagedObjectContext,并在这两行中将其分配给*context

id delegateContext = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [delegateContext managedObjectContext]; 

如果需要保存或访问managedObjectContext,请如何添加这些行,如果nil YES Appdelegate if (managedObjectContext == nil) { managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; NSLog(@"After managedObjectContext: %@", managedObjectContext); } 复制,请检查它。

      #import "AppDelegate.h"

尝试删除这两行,并在我建议的条件下添加上述内容。应该工作。

  

更新1:正如您所说,我提到了创建的步骤     Appdelegate访问全局属性的实例。

@implementation
Appdelegate创建 AppDelegate *app;

的实例后

viewDidLoad

app=(AppDelegate *)[[UIApplication sharedApplication]delegate]; 方法中......

{{1}}