2011-10-02 2 views
1

그래서 이것을 시험해 보았습니다.XCode : 분할 된 문자열 값을 검사하여 textField에 할당

060315512 Name Lastname 
    050273616 Name LastName 

내가 선을 분할하고 싶었 다음 각각의 라인을 분할 (9 자리) 첫 번째 부분을 확인하지만 것 : 기본적으로 나는이 텍스트 파일이 rawData.txt 이름을 포함했다, 그것은 다음과 같습니다 전혀 작동하지 않습니다 (내 창 닫음)이 코드에 문제가 있습니까? ==이 변수의 포인터 값을 비교하기 때문에

NSString *path = [[NSBundle mainBundle] pathForResource: @"rawData" ofType:@"txt"]; 
    if (path) 
    { 
     NSString *textFile = [NSString stringWithContentsOfFile:path]; 
     NSArray *lines = [textFile componentsSeparatedByString:(@"\n")]; 
     NSArray *line; 
     int i = 0; 
     while (i < [lines count]) 
     { 
      line = [[lines objectAtIndex:i] componentsSeparatedByString:(@" ")]; 
      if ([[line objectAtIndex:0] stringValue] == @"060315512") 
      { 
       idText.text = [[line objectAtIndex: 0] stringValue];  
      } 
      i++; 
     } 
    } 

답변

0

예 당신은, 당신이 isEqualToString를 사용해야합니다 2 문자열을 비교합니다. 그래서 이것은 잘못된 것입니다 :

경우 ([[라인 objectAtIndex : 0] stringValue] == @ "060315512")

당신은 작성해야 :

([[[라인 objectAtIndex 경우 : 0] stringValue ] isEqualToString : @ "060315512"]

0

콘솔 로그를 확인하면 "stringValue가 응답하는 객체 (NSString)에 전송되었습니다"와 같은 내용이 표시됩니다. line은 문자열 배열이므로 [[line objectAtIndex:0] stringValue]은 존재하지 않는 -[NSString stringValue]을 호출하려고합니다.

당신은 더 이런 식으로 뭔가 의미 :

NSString *path = [[NSBundle mainBundle] pathForResource: @"rawData" ofType:@"txt"]; 
if (path) 
{ 
    NSString *textFile = [NSString stringWithContentsOfFile:path]; 
    NSArray *lines = [textFile componentsSeparatedByString:@"\n"]; 
    for (NSString *line in lines) 
    { 
     NSArray *columns = [line componentsSeparatedByString:@" "]; 
     if ([[columns objectAtIndex:0] isEqualToString:@"060315512"]) 
     { 
      idText.text = [columns objectAtIndex:0]; 
     } 
    } 
}