2014-10-15 1 views
0

realm.io 프레임 워크의 0.86.3 버전을 사용하고 있습니다. 여기 키워드 사용 : Realm.io의 다중 레벨 키 패쓰에 포함 된 BEGINSWITH, ENDSWITH

처럼 내 객체가 모습입니다 : 모든 지금까지 잘 보이는

RLMArray <0x7fd1f3642a50> (
[0] Product { 
    identifier = 4; 
    overview = test; 
    desc = test; 
    reference = AB-123; 
    category = Category { 
     identifier = 2; 
     name = Telescopic Arm; 
     level = 1-1; 
     parent = Category { 
      identifier = 1; 
      name = Arm; 
      level = 1; 
      parent = (null); 
     }; 
    }; 
} 
) 

,하지만 난 요청에 노력하고있어 때

uncaught exception 'Invalid type', reason: 'Predicate 'CONTAINS' is not supported' 
:

RLMArray *products = [GEProduct objectsWhere:@"category.name contains 'telescopic'"]; 

을 나는 무엇입니까

무엇이 누락 되었습니까?

미리 감사드립니다.

답변

4

CONTAINS, BEGINSWITH, ENDSWITH 및 다중 레벨 키 패쓰에서 대소 문자를 구분하지 않는 쿼리와 같은 다중 레벨 키 패쓰 쿼리가 지원되지 않으므로 예외가 발생합니다. 현재이 기능을 사용하고 있지만 현재 사용하지 마십시오.

이 키워드는 하지만 직접 속성 쿼리를 지원하는, 그래서 당신은 다음과 같이 당신의 쿼리를 다시 일할 수 : 나는 우아한 아니다 알고 있지만

RLMArray *categories = [GECategory objectsWhere:@"name contains 'telescopic'"]; 
RLMArray *products = [GEProduct objectsWhere:@"category IN %@", categories]; 

우리는 더 복잡한에 대한 지원을 때까지 멀티 레벨 키 패스 쿼리가 필요합니다. 포스터의 원래 시도가 이제 대소 문자를 구분, BEGINSWITH, ENDSWITH이 지원됩니다 CONTAINS와 같은 쿼리를 작동하므로 키 패스 영역의 v0.88.0, 멀티 레벨의로

UPDATE (2014년 10월 27일)

:

[GEProduct objectsWhere:@"category.name contains 'telescopic'"]; 

렐름 v0.88.0이 곧 출시 될 예정입니다.

+0

RLMArray가 NSFastEnumeration 프로토콜을 구현하기 때문에 제품 요청에 범주 개체 (RLMArray)를 사용할 수없는 이유는 무엇입니까? – nstefan

+0

예! 나는 이것을 반영하기 위해 나의 대답을 편집했다. Realm의 Thomas는 최근이를 지원했습니다. – jpsim

+0

오 오케이, 확인해 주셔서 감사합니다. 그러면 프로세스가 약간 단순 해집니다. – nstefan