2010-01-17 4 views
2

이 코드가 작동하지 않는 이유를 알아 내려고하고 있습니다. 문자열에 "| P"가 포함되어 있는지 검색하려고합니다. 만약 그렇다면, 나는 뭔가하고 싶다.NSArray 객체의 NSString 값

NSMutableArray *list = [pView getPOIList]; 
NSString *cellValue = [list objectAtIndex:indexPath.row]; 
cell.textLabel.text = cellValue; 
NSArray *chunks = [cellValue componentsSeparatedByString: @"|P"]; 
//NSLog([[chunks count] stringValue]); 
if([&chunks[1] isEqualToString:@"|P"]) { 
     //Do Something 
} 

이로 인해 내 앱이 중단됩니다.

답변

4

NSArray *chunks은 C 배열이 아닌 NSArray입니다. &chunks[1] 대신 [chunks objectAtIndex:1]을 사용하여 개체를 찾을 수 있습니다.

스팅에 다른 문자열이 포함되어 있는지 확인하려면 ([cellValue rangeOfString:@"IP"].length == 0)을 사용할 수 있습니다. 범위의 길이가 0이면 문자열은 원래 문자열에 없습니다. Reference

+0

감사합니다. objectAtIndex가 문제였습니다. 또한 | P가 아닌 |로 문자열을 분할해야했습니다. – Adam

+1

rangeOfString을 사용하는 경우 .location = NS_NOT_FOUND를 찾는 것이 더 좋습니다 (내가하는 일이 훨씬 명확하다고 생각하지 않도록) –

2

1. 당신은 인덱스 x[1]에 의해 NSArray의하지 않습니다. 너는 지나치게 장황한 [x objectAtIndex:1]으로 그렇게한다.

: 문자열은 그래서 만약

2componentsSeparatedByString:|P에 의해 문자열을 분리합니다.

FOO|PURPLE|BAR|PIE|42|P|P2 

분리 된 문자열은

("FOO", "URPLE|BAR", "IE|42", "", "2") 

당신이 문자열 |P을 포함하는 결과 배열의 요소를 찾을 수 없습니다 것이다 될 것이다. 하위 문자열이 있는지 여부를 확인하려면 rangeOfString:을 사용하십시오.

NSRange substrRng = [cellValue rangeOfString:@"|P"]; 
    if (substrRng.location != NSNotFound) { 
    .... 
    }