2012-01-06 2 views
1

stackoverflow에서 몇 가지 질문을 읽은 후에도 여전히 답변을 찾을 수 없습니다.ManagedObjectContext를 TabBarViewControllers에 전달하는 방법

appdelegate에서 tabbarcontroller보기로 ManagedObjectContext를 전달하는 데 문제가 있습니다. 내 appdelegate.m에서

나는이

#import "memoView.h" 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    memoView *mView = (memoView *)navigationController.topViewController; 
    mView.ObjectContext =[self managedObjectContext]; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 


    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription 
            entityForName:@"NoteLog" inManagedObjectContext:[self ObjectContext]]; 
    [fetchRequest setEntity:entity]; 
    NSError *error; 
    self.memoInfo = [ObjectContext executeFetchRequest:fetchRequest error:&error]; 
    //self.title = @"Memo"; 
    [fetchRequest release]; 

} 

memoView.m

에서 오류 이유가 '+ entityForName : 엔티티 이름에 대한 NSManagedObjectModel을 찾을 수 없습니다'를 NoteLog ''

내가 뭘 잘못했는지 잘 모르겠다. 핵심 데이터에 대해 상대적으로 새로운 것이다.

모든 의견을 환영합니다.

답변

1

다음 코드는 어디에 넣으시겠습니까? 난 당신이 mView.ObjectContext을 할당 할 때 mView이 전무 추측 : 또 다른 싱글을 추가하는 것보다

#import "memoView.h" 
memoView *mView = (memoView *)navigationController.topViewController; 
mView.ObjectContext =[self managedObjectContext]; 
+0

- (BOOL) 응용 프로그램에 코드를 추가합니다. (UIApplication *) application didFinishLaunchingWithOptions : (NSDictionary *) launchOptions – Desmond

+0

mView가 nil인지 테스트 했습니까? – an0

2

나는 한 지점에서이로 실행하고이 같은 해결 :

YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate]; 
self. ObjectContext = appDelegate.ManagedObjectContect; 
+0

+1, 더 나은 방법. – mvds

1

나는 개인적으로 Singleton for my CoreData Stack을 구현하는 것입니다. - 조금 더 안전한 방식으로. like here.

기본적으로 싱글 톤 패턴은 "전역 변수"의 변명입니다. 비록 올바르게 구현되고 현명하게 사용된다면 가장 강력한 패턴 중 하나가 있습니다. 간단히 말하면, 그것은 무엇인가 : 그것은 아직 존재하지 않는 클래스의 객체를 생성하고 그 객체의 클래스의 정적 변수에 저장합니다. 그리고 클래스 변수의 내용은 그 클래스의 모든 인스턴스간에 동일하기 때문에 (다음 번 클래스의 인스턴스를 할당하려고 시도 할 때 이전에 할당되었는지 여부와 이전 인스턴스가 반환되었는지 여부를 확인합니다.

따라서 기본적으로 어디에서나 "할당"할 수 있지만 원하는 경우가 많으며 항상 같은 개체를 다시 가져옵니다.

사람들은 "DataManager"또는 이와 유사한 행을 따라 그 싱글 톤 클래스를 호출하는 경향이 있습니다.

관련 문제