2013-12-09 6 views
0

코어 컨트롤러 레코드를 추가 할보기 컨트롤러가 있습니다. 핵심 데이터 엔티티 이름은 FavoriteThings이고 속성은 thingname입니다. SaveButtonAction이라는 저장 단추 작업이 있습니다. 내가 버튼을 탭하면, ToDoTextField라는 텍스트 필드에 삽입 된 텍스트를 저장해야하지만, 응용 프로그램은 다음과 같은 로그 오류 보여 추락 :이 방법코어 데이터 레코드를 저장하려고 시도한 후에 오류가 발생했습니다.

- (IBAction)SaveButtonAction:(id)sender { 
    FavoriteThing *newEntry = [NSEntityDescription insertNewObjectForEntityForName:@"FavoriteThing" inManagedObjectContext:managedObjectContext ]; 
    newEntry.thingName = self.ToDoTextField.text; 
    NSError *error; 
    if (![self.managedObjectContext save:&error]) 
    { 
     NSLog(@"Whoops, couldn't save:%@",[error localizedDescription]); 
    } 

감사에 대한 코드입니다

2013-12-09 12:30:07.488 Favorite Things[1701:a0b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name 'FavoriteThing'' 

을 당신을 위해 ..

답변

0

, 엔티티 이름을 확인하시기 바랍니다 또한

+(YourAppDeleagte*)sharedManagedContext; 

# import를

+(YourAppDeleagte*)sharedManagedContext{ 

    return (YourAppDeleagte *)[[UIApplication sharedApplication]delegate]; 
} 

viewController.m

에서 YourAppDeleagte.m에 YourAppDeleagte.h에

를 다음을 수행 "YourAppDelegate.h"

@property(nonatomic,retain)NSmanagedObjectContext *managedObjectContext; 

-(void)viewDidLoad{ 
    [super viewDidLoad]; 
    self.managedObjectContext=[YourAppDelagete shareManagedContext].managedObjectContext;   
} 
+0

감사합니다 @DineshKumar,하지만 문자 + (... *)는 무엇을 의미합니까? – mvasco

+0

+ (void) methodA 클래스 메소드입니다. - (void) methodB 인스턴스 메소드 – DineshKumar

+0

이 줄을 내 AppDelegate.h에 추가하는 것을 의미합니까? - (void) sharedManagedContext; – mvasco

1

NSManagedObjectContext을보기 컨트롤러 (귀하의 컨텍스트는 nil)로 전달하지 마십시오.
강력한 참조를 유지하고 올바른 컨텍스트로보기 컨트롤러를 초기화하십시오. 당신이 CoreData 프로젝트의 상용구 코드를 사용하는 경우

, 당신은 당신의 애플 대리자를 통해 주요 상황에 대한 액세스 권한을 얻을 수 있습니다 : 당신의 managedObjectContext 매개 변수가 전무의 값을 가지고 있음을 말하고 appDelegate.managedObjectContext

+0

@ Dan Shelly에 감사드립니다. – mvasco

1

. 어쩌면 [self managedObjectContext]을 의미 할 것입니다. 추측 할 점은 관리 대상 객체 컨텍스트를 인스턴스화하는 "게으른"접근 자이며이 시점에서 아직 호출되지 않은 접근 자입니다. 예외를 던지는 코드에서 직접 인스턴스 변수에 액세스하고 있습니다.

+0

@quellish 감사합니다. – mvasco