我有一个从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?...我没有在我使用它的任何类中释放它,如果我已经释放它,我在哪里做它?
任何人都可以帮助我吗?
答案 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}}