2013-07-05 3 views
1

NSDictionary를 포함하는 NSMutableArray * dataArray가 있습니다. searchString이 사전 값 중 하나와 일치하면 첫 번째 배열의 객체를 사용하여 새 NSMutableArray * tempDataArray를 만들기 위해 배열을 반복합니다. 사전도있는 NSDate 포함되어 있기 때문에사전 값을 비교하여 배열을 반복합니다.

self.tempDataArray = [[NSMutableArray alloc] init]; 

for (int i = 0; i < kDelegate.dataArray.count; i++) { 

    NSDictionary *dict = [kDelegate.dataArray objectAtIndex:i]; 

    for (int j = 0; j < [dict allValues].count ; j++) { 

     if ([[[[dict allValues] objectAtIndex:j]stringValue] isEqualToString:searchString]) { 

      [self.tempDataArray addObject:dict]; 
     } 
    } 

} 

지금이 작동하지 않습니다

여기 내 코드입니다. 내가 그나마

-[__NSTaggedDate stringValue]: unrecognized selector sent to instance 0x41b7809e2600000d 

이해, 내가 stringValue 모든 값을 선언 않기 때문에 : 적어도 그게 내가 오류 메시지에서 읽고 있습니다 것입니다.

내 문제의 첫 번째 부분이었습니다. 두 번째 절반은 정확한 일치를 검색하는 것입니다.하지만 사전 값에 하위 문자열이 포함되어 있는지 검색하는 것이 좋습니다.

어쨌든 모든 도움에 감사드립니다.

+0

당신은 "stringValue로 선언 모든 값"이란 무엇을 의미합니까? 의미있는 것은 아닙니다 ... 또한 예외 메시지를 읽으십시오. 'stringValue' 메시지를 구현하지 않는'NSDate'에 보내려한다는 것을 알려줍니다. –

+0

나는이 줄을 의미했다 :'[[dict allValues] objectAtIndex : j] stringValue]' 날짜를 돌보고 그것을 문자열 값으로 변환하면 안된다? – freshking

답변

1

(안된) :

self.tempDataArray = [[NSMutableArray alloc] init]; 

for (NSUInteger i = 0; i < kDelegate.dataArray.count; i++) { 

    NSDictionary *dict = [kDelegate.dataArray objectAtIndex:i]; 
    NSArray *allValues = [dict allValues]; 

    for (NSUInteger j = 0; j < allValues.count; j++) { 
     NSObject *obj = [allValues objectAtIndex:j]; 
     if ([obj isKindOfClass:[NSString class]]) { 
      NSRange range = [(NSString *)obj rangeOfString:searchString]; 
      if (range.location != NSNotFound) { 
       [self.tempDataArray addObject:dict]; 
      } 
     } 
    } 
} 
+0

이것은 완벽하게 작동합니다. 간단한 복사 및 붙여 넣기. – freshking

+0

@freshking 환영합니다. – trojanfoe