2012-06-11 6 views
2

안녕하십니까, 저는 iPhone 프로그래밍 및 핵심 데이터의 초보자입니다. 나는 현재 Core Data의 이론을 배우려고 노력 중이며 this 튜토리얼을 사용하여 응용 프로그램에서 구현하도록 돕고있다.코어 데이터의 뷰에서 데이터 전달

이 자습서에서는 기본보기에 저장된 개체를 나열하는 UITableViewController과 개체를 저장하는 또 다른 UITableViewController (특성에 입력하는 위치)을 만듭니다.

내가 만드는 앱에는 3 개의보기가 있습니다. 기본보기는 보통 UIViewController (계산을 처리 함)이고 더 구체적인 속성으로 입력하는 두 번째보기로 이동하는 UIBarButtonItem을 눌러 계산을 저장할 수 있습니다. 저장을 탭하면 기본보기로 되돌아 가서 저장된보기 표시 버튼을 탭하여 저장된 객체가 포함 된 UITableViewController에 액세스 할 수 있습니다. 내가 포함했다

내 기본보기의 인터페이스 파일에 UITableViewController 파일을 #imported,하지만 난이 프로그램을 실행할 때, 나는 나의 prepareForSegue 방법이 행에 오류 : 오류가 "속성이

addShoeSizeTVC.managedObjectContext = self.managedObjectContext; 

입니다 managedObjectContext가 'SSFViewController *'유형의 객체에서 발견되지 않음 "이 오류의 의미를 이해합니다. SSFViewController 클래스에서 managedObjectContext라는 객체가 없지만 managedObjectContext가 포함 된 파일을 포함하는 경우 여전히 인정 받는다. 자습서에서는 prepareForSegue 메서드가 새 개체 추가에 대한 목록 뷰에 포함되어 있다는 것을 추가해야합니다. 이 방법을 내 mainViewController으로 옮겼습니다.

나는 또한 내 ApplicationDidFinishLaunchingWithOptions 방법에 내 응용 프로그램 위임에 오류가 발생합니다 :

나는이 다른 오류와 같은 문제에서 비롯된 것으로 알고
controller.managedObjectContext = self.managedObjectContext; 

가 (이 같은 오류 메시지를 제공합니다).

내 viewA (mainView)에서 viewB (오브젝트 추가), viewA로 돌아간 다음 viewC (저장된 오브젝트보기)로가는 데이터를 전달하는 방법을 이해할 수 없습니다. 내가 위임에 대한 들었 내 SSFViewController 기본보기에 내 prepareForSegue 방법을 사용하고 있습니다 : 나는 "호환되지 않는 유형의 매개 변수에 'AddObjectTVC *을'전달 'ID가 말한다 경고를 얻을 addObjectTVC.delegate = addObjectTVC.self; 라인 또한

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    if ([segue.identifier isEqualToString:@"Add Object Segue"]) { 

     NSLog(@"Setting ObjectsTVC as a delegate of AddObjectTVC"); 
     AddObjectTVC *addObjectTVC = segue.destinationViewController; 
     addObjectTVC.delegate = addObjectTVC.self; 
     addObjectTVC.managedObjectContext = addObjectTVC.self.managedObjectContext; 
    } 
} 

' "

메인보기에 NSManagedContext 또는 다른 위임 방법을 설정해야합니까? 아니면 내 테이블 뷰 중 하나에 추가해야하는 무언가입니까 ???

대단히 감사합니다. 올바른 정보가 제공된다면 해결해야 할 간단한 문제라고 생각합니다. 문제 해결을 위해 필요한 경우 다른 방법을 게시 해 드리겠습니다. 나는 초보자이기 때문에 초보자 친화적 인 방법으로 설명 할 수 있다면 좋을 것입니다.

감사합니다.

답변

1

먼저,의 ViewB에 속성을 삽입하고이 @property에 ViewA에서 데이터를 전달할 수

ViewB :

@property (비 원자력, 강함) NSString * yourName; (@synthesize YOURNAME 전화 잊지 말고)

ViewA (prepareForSegue 방법에서)

"ViewB 제어기"* = segue.destinationViewController 제어기; 나는 "이봐 데이터를 저장하십시오"ViewA에 ViewB에서 보낸 대리인을 선호 : - = self.name

controller.yourName> 이름은 ViewB

둘째

에 전달됩니다. 그것은 당신의 컨트롤러를 쉽고 똑똑하게 유지하고 모든 뷰 컨트롤러에서 save 메소드를 관리 할 필요가 없습니다. 대의원은 iOS의 중요한 장이며 초보자에게는 매우 좌절 할 수 있습니다. (저는 9 개월 전 같은 상황이었습니다.) 대표자 예제를 검색하고 그것이 어떻게 작동 하는지를 이해하려고 시도합니다. 당신이 대리인에 대해 더 궁금한 점이 있으면 질문에 친절하게 대답 할 것입니다.

+0

prepareForSegue에서 2 가지를 전달할 수 있습니까? 'managedObjectContext'와 'data-name-ID-object'가 있습니까? –

+0

속성을 통해 'managedObjectContext'에 액세스하고 prepareForSegue 메소드에서 전달하지 않습니다. 이해하기 쉽고 훨씬 깔끔합니다. 왜 touch 된 객체를 식별하기 위해 prepareForSegue 메소드에서 sender 객체를 사용하지 않습니까? – andreasgasser

+0

모두 좋은 코드 디자인은 특히 prepareForSegue에서보기를 따라 managedObjectContext를 전달하는 것입니다. 하지만 개체를 ​​전달할 내 문제를 해결 :) [[segue destinationViewController] setObjInNextView : myObj]; 다음보기 –

0

managedObjectContext 속성을 가진보기 컨트롤러가 아니지만 UIManagedDocument입니다.

컨텍스트는 일반적으로 응용 프로그램이 데이터 저장소에서 작동하는 '스크래치 패드'로 설명됩니다.당신이 ViewB에 ViewA의 데이터를 원하는 경우 모든