2009-08-13 6 views
0

저는 Album이라는 핵심 데이터 엔티티를 가지고 있습니다. 앨범은 노래라는 엔티티 (노래라고 함)와 관계가 있으며 각 노래에는 임의의 수의 태그 엔티티 (태그 속성에서)가 있고 태그에는 이름이 있습니다. 이제 앨범에있는 노래에 태그가 포함되어 있는지 확인하고 싶습니다. 단일 NSPredicate를 사용합니다. 마음에 온NSPredicates와 이중 대 n 관계

아이디어였다

[NSPredicate predicateWithFormat: @"ANY (ANY songs).tags LIKE %@", someTagName]; 

그러나 이것은 런타임 오류가 발생합니다 ("형식 문자열을 구문 분석 할 수 없습니다"). 나는 성공하지 못한 채 다양한 변형을 시도했다.

이렇게 할 방법이 있습니까?

답변

0

난 당신이

[NSPredicate predicateWithFormat:@"ANY [email protected] LIKE %@", someTagName] 

체크 아웃 set and array operators에 키 - 값 프로그래밍 가이드 섹션을 원하는 생각합니다.

+0

정말 좋았습니다. 시도했지만 다시 붙어 있습니다. 이것은 보통 내게 자주 발생하지 않습니다 ... 이제 다음과 같은 예외가 발생합니다 : *** 캐치되지 않은 예외 'NSUnknownKeyException'으로 인해 응용 프로그램 종료 중, 이유 : '[ valueForUndefinedKey :] : 엔티티 앨범은 키 "노래. @ distinctUnionOfSets.labels"에 대해 키 값 코딩을 준수하지 않습니다. 나는 둥글 랐지만, @distinctUnionOfSets을 놓을 수있는 곳을 찾지 못했습니다. 내가 잘못하고있는 어떤 단서가 있습니까? –

+0

@Julian 죄송합니다. 이것은 테스트하지 않고 작성한 것에 대한 제 잘못입니다. 함께 플레이 할 핵심 데이터 프로젝트가 없기 때문에 머리 꼭대기에서 일하고 있습니다. @distinctUnionOfSets가 아닌 @unionOfSets을 사용해 보셨습니까? 나는 항상이 집합 연산자로 조금 고투한다. 종종 [album valueForKeyPath : @ "@ songs.tags"]와 같은 줄에 중단 점을 넣고 결과가 디버거에 있는지 확인해야합니다. 집합이라면 @ unionOfSets.songs.tags가 설정해야합니다. 그것이 다른 것이라면 keypath를 적절하게 수정해야합니다. –

0

아이폰에서는 단 한 번 생각했지만 LIKE를 사용할 수 없습니까? 나는 BETWEEN과 함께 힘든 시간을 보냈는데, 이는 효과가없는 것으로 알고 있습니다.

태그에는 노래와 다 대다 관계가 없습니다. 그런 식으로 모델링 한 경우 태그에 대한 노래를 가져 오는 것은 속성 태그에 액세스하는 것입니다. 모델을 만든 방식에 따라 각 노래마다 태그를 복제 할 수있는 것 같습니다 (앱에서 잘할 수 있음).