2011-12-18 3 views
2

apple rss 뉴스 피드의 게시물 제목 인 문자열에 하위 문자열이 들어 있는지 확인하고 싶습니다. "Steve"또는 "Jobs". 내가 uitableview로 게시물을 조직.문자열에 하위 문자열이 포함되어 있는지 확인하는 방법 (objective-c)

그래서 거기에 내가 확인하려면이 옵션을 사용하므로 제목에 스티브 또는 채용을 한 후 WAS :

if ([[entry title] localizedCaseInsensitiveCompare:@"Steve"] == NSOrderedSame ||  [[entry title] localizedCaseInsensitiveCompare: @"Jobs"] == NSOrderedSame) { 

    NSLog(@"Comparism of Steve Jobs"); 
    cell.imageView.image = [UIImage imageNamed:@"steve.png"]; 
} 

을하지만 호출하지 않았다, 항목 제목을 포함하는 RSSItem 클래스입니다 - 항목이와 그것의 제목은 나의 문제가 아니다, 나는 체크했다. 내 comparism가 문제입니다. 어떻게합니까?

업데이트! 자신의 타이틀 나던 스티브 잡스를 포함하더라도

일부 세포가 steve.png으로 자신의 이미지 뷰를 가지고 : 나는 방법 또한 다른 사람을 시도

NSRange range = [[[cell textLabel] text] rangeOfString:@"Steve" options:NSCaseInsensitiveSearch]; 

if (range.location != NSNotFound) 
{ 
    cell.imageView.image = [UIImage imageNamed:@"steve.png"]; 


} 

하지만 같은 결과 : 여기 좋아

코드입니다 . 기묘한??? 아래로 스크롤하면 다시 올라가서 대기열에있는 모든 대기열에있는 셀에 할당되고 초기화됩니다. 스티브 작업 사진이 있습니다. 시작할 때 앱을 열면 제목에 steve가없는 셀에 이미지가 있고 위의 상황이 발생합니다.

내 주변의 코드가 필요한 경우 : 당신은 전체 문자열을 비교하는

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

UITableViewCell *cell = [tableView 
         dequeueReusableCellWithIdentifier:@"UITableViewCell"]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
            reuseIdentifier:@"UITableViewCell"] 
      autorelease]; 
} 


tableView.autoresizingMask = 5; 
tableView.autoresizesSubviews = YES; 
cell.autoresizingMask = 5; 
cell.frame = CGRectMake(cell.frame.origin.x, cell.frame.origin.y, 20, 20); 
RSSItem *item = [[channel items] objectAtIndex:[indexPath row]]; 
[[cell textLabel] setText:[item title]]; 
NSMutableString *string = [[NSMutableString alloc] initWithString:[[cell textLabel] text]]; 

if (string.length > 46) { 
    cell.textLabel.numberOfLines = 2; 
    UILineBreakMode lineBreak = UILineBreakModeClip; 
    cell.textLabel.lineBreakMode = lineBreak; 

} 

[string release]; 

tableView.backgroundColor = [UIColor darkGrayColor]; 
cell.textLabel.font = [UIFont fontWithName:@"Arial Rounded MT Bold" size: 12.0]; 
cell.backgroundColor = [UIColor whiteColor]; 

NSRange range = [[[cell textLabel] text] rangeOfString:@"Steve" options:NSCaseInsensitiveSearch]; 

if (range.location != NSNotFound) 
{ 
    cell.imageView.image = [UIImage imageNamed:@"steve.png"]; 


    } 



return cell; 

    } 
+1

몇 세포의 텍스트를 제공하시기 바랍니다 거짓 일치 " 스티브 ". –

+1

그리고 "스티브"가 아닌 재활용 된 셀에서 이미지를 제거 하시겠습니까? 그것은 나에게 그것 같이 보이지 않는다. 거짓 스티브 일치하는 몇 가지 세포의 –

+0

텍스트 : 내가 다시 스크롤 할 때 애플 이사회 이사의 문 하루 – user973985

답변

1

당신이 재생 세포에서 이미지를 재설정하지 않을 때문이다

"내가 다시 스크롤 할 때 모든 재활용 세포는 스티브 잡스의 이미지를 가지고". (적절한 장소에서

else { 
    cell.imageView.image = nil; 
} 

를 추가하십시오.)

6

하고, "스티브 잡스는"중 "스티브"또는 "채용 정보"를 일치하지 않습니다. rangeOfString:@"Steve" options:NSCaseInsensitiveSearch 또는 일부 사용하려고합니다.

+0

똑딱하지만 스티브가 문자열에있는 경우 말해주지 않을 것입니다 – user973985

+0

NSRange를 반환합니다 아무데도 가까이 내가 원하는 것 기본적으로 찾고 싶습니다 IF 이미지의 이미지를 만들 수 있도록 Steve가 제목에 포함되어 있다면 셀의 사진은 steve 작업의 그림이됩니다. – user973985

+0

정확히 원하는대로 수행합니다. 문서를 읽으면, 문자열이 포함되지 않으면 {NSNotFound, 0}'의'NSRange'를 반환합니다. – paulbailey

12

NSString-rangeOfString은 "찾을 수 없음"대/소문자를 확인할 수있는 NSRange를 반환합니다.

if ([@"Some awesome string." rangeOfString:@"awesome"].location != NSNotFound) 
{ 
    // awesome is in 'Some awesome string.' 
} 
else 
{ 
// awesome is not in 'Some awesome string.' 
} 
+0

+1'options : NSCaseInsensitiveSearch' 버전을 사용하면 대소 문자를 구분하지 않는 검색의 OP (명백한) 목표를 달성 할 수 있습니다. –

+0

어떤 이유로이 비교가 불려질 때도 마찬가지입니다. 업데이트 된 질문 확인 – user973985

2

당신이 iOS8의에 있다면 당신이 할 수있는 지금과 같이

NSString *stringToSearch = @"Steve"; 
    if ([stringToSearch containsString:@"Steve"]) 
    { 
     NSLog(@"String contains Steve!!!"); 
    } 
    else 
    { 
     NSLog(@"String does not contain Steve!!!"); 
    } 
관련 문제