2012-11-27 4 views
0

iOS 앱이 몇 가지 tableviews를 거쳐 사전 기반 프로필 클래스에 데이터를 추가합니다. 사용자가 프로파일을 완료하면 다음 로그인에서 프로파일 작성 (및 해당 테이블 뷰)을 건너 뛸 수 있지만, 선택하면 프로파일을 다시 작성할 수 있습니다. 나는 프로필 클래스를 단계별로 전달하기 위해 segues를 사용합니다. 다시 빌드하면 앱이 처음으로 돌아갑니다. 문제 : 재구성시 첫 번째 테이블 뷰 (국적)에 전달되면 프로파일이 사라집니다. Nationality_VC에서사용자가 내용을 업데이트하면 통과 된 사전 클래스 segue가 실패합니다.

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    NSMutableArray *sendArray = [[NSMutableArray alloc] initWithObjects:user0, nil]; 
NSLog(@"send array = %@", sendArray); 
    if(buildPf) {  // to Nationality VC 
     if ([[segue identifier] isEqualToString:@"getNationality"]) { 
      Nationality_TableVC *vc = [segue destinationViewController]; 
      vc.profiles0 = sendArray; 
     } 
    } else {  // to Profile VC 
     if([[segue identifier] isEqualToString:@"directToProfile"]) { 
      YourProfile_VC *vc = [segue destinationViewController]; 
      vc.profiles10 = sendArray; 
      [vc setPushID:[user0.userID integerValue]]; 
      [vc setPushedPf:profileSum]; 
     } 
    } 
} 

상기 .H : 여기서 코드의 비트의

@property (강한 비 원자)가있는 NSMutableArray * profiles0; 하는 .m에서

는 :

@implementation Nationality_TableVC { 
    NSUInteger selectedIndex; 
    NSUInteger selectedRow; 
    Profile  *user0; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    user0 = [[Profile alloc] init]; 
    user0 = [self.profiles0 objectAtIndex:0]; 
    NSLog(@"(Nationality) user0 is %@", user0); 
    selectedRow = -1; 
    [self makeTableIndex]; 
} 

디버깅을 통해, 나는 수업이 제대로 다시 점프 후 채워지는 것을 볼 수 있습니다. sendArray는 항상 정확합니다. 초기 빌드 동안 작동했던 것과 동일한 Segue를 통해 프로파일이 사라집니다. 왜? 앱이 충돌합니다. 국적 테이블 뷰에는 NSLog가 있습니다. 초기 구축시, 메시지는 다음과 같습니다

(Nationality) user0 is <Profile: 0x7152330> 

동안은 다시 메시지는 다음과 같습니다

다음
(Nationality) user0 is (null) 

A (널) 프로필에 국적 선택을 추가하려고은 물론, 원인 추락. 사용자가 Rebuild를 선택하고 마음이 바뀌면 다시 완성 된 프로파일로 바로 이동할 수 있습니다. 그럴 경우, segue가 프로파일 클래스를 올바르게 전달합니다. 문제 없어. 실종의 원인은 무엇입니까?

+0

약한 코더 외에도 stackoverflow 질문도 훌륭하지 않습니다. 질문을 어떻게 개선 할 수 있습니까? –

+0

당신은 NSLog를'sendArray'로 가지고 있지만 당신에게 보여주고있는 것을 말하지 않습니다. –

+0

프로필 클래스의 내용을 보여 주며 항상 적절합니다. –

답변

0

내 친구 Nop이 나를 다시 구출했습니다. 그의 디버깅 기술은 내 것보다 훨씬 낫다. 그는 내 buildPf bool이 내 prepareForSegue를 nationality_TableVC에 실제로 차단하고 있다는 것을 보여주었습니다. segue가 호출되었을 때, 준비를 건너 뛰었습니다. 사실, buildPf 조건은 prepareForSegue에서 전혀 필요하지 않습니다. 이 어리석은 실수에 시간과 시간을 낭비했습니다.

관련 문제