2012-09-25 4 views
0

나는 세 개의 별도 열에 이름, 성 및 이메일이 포함 된 csv 파일을 업로드 할 수있는 앱을 개발 중입니다. 사용자 인터페이스에는 3 개의 텍스트 필드와 버튼이 있습니다. 사용자가 이름이나 성 또는 전자 메일을 입력하고 검색 버튼을 클릭하면 전체 문서가 검색되어야하며 해당 레코드가 파일에서 발견되었다는 경고를 표시해야합니다. 이것은 사용하고있는 함수이지만 첫 번째 행과 첫 번째 열만 읽습니다.CSV 파일의 개별 필드를 읽고 사용자 입력과 비교하는 방법은 무엇입니까?

- (void) SearchStudent 

{ 

    NSArray *DocumentPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 



    NSString *DocumentDirectory = [DocumentPath objectAtIndex:0]; 



    NSString *FullPath = [DocumentDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"example.csv"]]; 



    NSString * pstrCSVFile= [NSString stringWithContentsOfFile:FullPath encoding:NSASCIIStringEncoding error:NULL]; 



    NSArray * paRowsOfCSVFile= [pstrCSVFile componentsSeparatedByString:@"\n"]; 

    NSArray *paColumnsOfRow; 

    NSString *pstrFirstColumn; 



    for(NSString * pstrRow in paRowsOfCSVFile) 

    { 

     paColumnsOfRow= [pstrRow componentsSeparatedByString:@","]; 

     pstrFirstColumn= [paColumnsOfRow objectAtIndex:0]; 

     if([pstrFirstColumn localizedCaseInsensitiveCompare:GWIDText.text] == NSOrderedSame) 

     { 

      UIAlertView *alertingFileName = [[UIAlertView alloc]initWithTitle:@"Error" message:@"Found" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 

      [alertingFileName show]; 

      break; 

     } 

     else 

     { 

      UIAlertView *alertingFileName1 = [[UIAlertView alloc]initWithTitle:@"Error" message:@"Not Found" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 

      [alertingFileName1 show]; 

      break; 

     } 

    } 


} 

답변

0

그것은 당신의 다른 문은 이름이 일치하지 않는 경우 루프의 에서 파괴되는 것 같습니다 도와주세요. 이를 제거하고 일치 항목을 찾았다면 변수를 추가하여 추적 할 수 있습니다. 이름과 일치하는 경우에만 설정하십시오. 루프를 입력 한 후 변수가 일치하는지 확인하십시오. 그렇지 않다면 UIAlertView를 "찾을 수 없음"으로 표시하십시오. 힌트

+0

오 ... 실제로 다른 블록을 시도하지 않고 시도했지만 ... 여전히 첫 번째 행의 첫 번째 열을 확인합니다. – dcprog

+0

무엇입니까? \ [paRowsOfCSVFile count \]와 같습니까? 1이고 파일에 여러 줄이있는 경우 "\ n"대신 "\ r"으로 분할해야합니까? – stevekohls

+0

그래도 작동하지 않습니다 ... 여전히 작동하지 않습니다 – dcprog

0

커플 :

  1. 당신은 하나 개의 컬럼 만 확인된다.

    if([pstrFirstColumn localizedCaseInsensitiveCompare:GWIDText.text] == NSOrderedSame) 
    

다른 두 열이 동일한 작업을 수행. 그런 다음 한 열만 확인하는 첫 번째 문제를 해결할 것입니다.

  1. 줄 종결자가 잘못되었습니다. csv 파일을 만든 플랫폼에 따라 다른 라인 종결자가있을 수 있습니다. 예를 들어 notepad ++와 같은 텍스트 편집기를 사용하고 줄 종결자를 찾기 위해 숨겨진 코드를 보는 것이 좋습니다. 그런 다음 종결자를 사용하여 행을 분할하십시오. 1 행 이상을 가져 왔는지 확인하십시오 (행 변수를 출력하는 것만).
+0

어떻게 작동합니까? 여러 줄을 확인하려면? 나는 \ n과 \ r을 종료하려고 시도했다 ... 나는 보통의 노드 패드를 사용하여 CSV 파일을 만든다. – dcprog

관련 문제