2011-09-14 3 views
1

NSPredicate를 사용하여 개체 배열을 검색하려고합니다. 객체에는 필터링 할 NSString 속성이 있습니다.NSPredicate 문제가 발생했습니다.

나는 필터링 할 수있는 다음과 같은 코드가 있습니다

NSString *predicateString = [NSString stringWithFormat:@"name like[c] %@",self.textFieldOutlet.text]; 
NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:predicateString]; 
NSArray *results = [[MySingleton sharedMySingleton].cardArray filteredArrayUsingPredicate:searchPredicate]; 

을하지만 다음과 같은 오류 얻을 : 나는 %@ 주위에 작은 따옴표를 넣으면 작동

WebKit discarded an uncaught exception in the webView:shouldInsertText:replacingDOMRange:givenAction: delegate: <NSUnknownKeyException> [<CardObject 0x14a530> valueForUndefinedKey:]: this class is not key value coding-compliant for the key test. 

하지만 입력 한 경우에만를 텍스트는 이름 키에 대해 보유 된 값과 정확히 동일하며 값을 '좋아'하는 경우가 아닙니다. 따라서별로 유용하지 않습니다. 술어 문자열에 문제가있을 것입니다. 누구든지 조언 할 수 있습니까?

미리 감사드립니다.

+0

predicateString에 저장할 값을 게시 하시겠습니까? –

+0

오류는 관련이없는 것으로 보입니다. 작은 따옴표를 삽입 할 때만 앱이 작동하는지 다시 확인할 수 있습니까? –

+0

지연 사람들에 대해 죄송합니다. @iApple predicateString = 이름은 [c] 테스트와 같습니다. – bennythemink

답변

0

좋아요. 왜 아직도 NSPredicate에 대한 webview 오류가 발생하는지 잘 모르겠습니다. 하지만 다음 술어 문자열을 사용하여 문제를 해결했습니다 :

(name like[cd] '*%@*') 
0

오류는 개체가 키 - 값을 준수하지 않는다고합니다. NSDictionary 대신 사용하십시오

0

오류는 사용자의 CardObjects이 KVO의 'test'속성을 지원하지 않는다는 오류가 표시됩니다.

그러나 술어는 name 속성을 비교하기 만하면되므로이 술어가 웹보기가 충돌하지 않는 것처럼 보입니다.

webView:shouldInsertText:replacingDOMRange:givenAction: 메서드의 내용을 버그가 발생한 곳의 질문에 추가 할 수 있습니까?

프리디 케이트를 변경하면 나중에이 메서드에서 코드의 흐름이 바뀌고 오류의 위치가 바뀐 것 같습니다. 나머지 코드는 보지 않아도됩니다.

+0

안녕 딘, 답변 주셔서 감사합니다. 나는 그 오류가 webview를 가지고 있다는 것을 알아 차 렸습니다. 왜 이것이 코드가 호출되지 않았는지 전혀 모릅니다. 웹보기 대신에 그냥 일반 뷰 컨트롤러를? 미안 해요, 내가 너무 오랫동안 코드의 동일한 비트를 쳐다봤을 것 같아요! – bennythemink

관련 문제