2012-07-13 3 views
1

enter image description here의한 캐치되지 않는 예외 'NSInvalidArgumentException'이유로 : NSArrayM objectForKey

애플리케이션의 종료로 인해 캐치되지 않는 예외 'NSInvalidArgumentException'이유로 '- [__ NSArrayM objectForKey는 :] : 미정 선택기 인스턴스 0x12e654c0 전송.

두 개의 사전 개체가있는 Array에서 tableview에 데이터를로드하고 있습니다. viewDidLoad에 코드가 항상 아래 스크린 샷을 참조하십시오 충돌 첫째 행에 대해하지만 두 번째 행 indexPath.row == 1에 충돌 결코 그것은

while (sqlite3_step(statement) == SQLITE_ROW) { 
    NSString* delID = [NSString stringWithUTF8String:(const char *) sqlite3_column_text(statement, 0)]; 
    NSString* name =[NSString stringWithUTF8String:(const char *) sqlite3_column_text(statement, 1)]; 


    NSMutableDictionary *dict=[NSMutableDictionary dictionary]; 
    [dict setObject:delID forKey:@"delID"]; 
    [dict setObject:name forKey:@"name"]; 
    [self.arr addObject:dict]; 

아래에 전화했을 때 사전 객체 2는 NSString 객체를 포함합니다. (UIPopoverController *) popoverController이 { 경우 ([datePicker1.CurrentDate 길이]) {

UIButton *btn=(UIButton*)[self.view viewWithTag:btnTag]; 
[btn setTitle:datePicker1.CurrentDate forState:UIControlStateNormal]; 
} 

if ([self.searchDel.arrSelectDelAdd count ]) 
{ 
    [self.arr addObject:self.searchDel.arrSelectDelAdd]; 



    [self.tblDelivery reloadData]; 

} 

} 
+0

두 번째 행에 사전 데이터가 없기 때문에. 현재 무엇을하고 있습니까? if (i == 0) { [self.arr addObject : dict]; } 는 그래 난 당신이 DICT 위의 스크린 샷 1 개체 delID = 002이 포함되어 볼 수 있습니다 얼마나 많은 객체 배열 –

+0

에서 확인하시기 바랍니다> "내가"값이 "0"인 경우에만 사전을 추가 할 것입니다; name = ""; 크래시 후 디버거에서 값을 인쇄했습니다. –

+0

배열 길이를 확인하십시오. NSLog ("Arrar Count % d", array.count); –

답변

0

죄송합니다 :) 시도하는 것은 실제로 문제는 두 번째 또는 cellForRowAtIndexPath에서

[self.arr addObject:self.searchDel.arrSelectDelAdd]; //Incorrect, that is adding NSArray type not dictionary 

후 점점 값을 같은 다른 개체를 추가하고 있다는 점이다

NSDictionary *dict=[arr objectAtIndex:indexPath.row];//here dict will contain NSSArray type not dict type object its causing to crash app. 

cell.lblID.text=(NSString*)[dict objectForKey:@"delID"];// at this line. 
cell.lblName.text=(NSString*)[dict objectForKey:@"name"]; 


[self.arr addObjectsFromArray:self.searchDel.arrSelectDelAdd]; // correct, thats the solution giving contents of NSSArray and now working my code 
1

이 제거 : (무효) popoverControllerDidDismissPopover는 - 도움이 여기에

주셔서 감사합니다 나는 다시 가 self.arr를 작성하고있다 귀하의 코드에서 조건. 그냥 첫 번째 사전을 두 번째 배열이 아닌 배열에 추가하기 때문입니다.

//if (i==0){ 
     [self.arr addObject:dict]; 
//} 

이 여러분을 귀찮게

+0

실제로 그 다른 용도로 사용 viewDidLoad 후 Array에 2 개의 객체가 있습니다. 그 numberOfRowsinSection [arr count]가 2로 반환됩니다. –

관련 문제