2015-01-23 2 views
1

내 프로젝트에서 객체를 저장하기 위해 영역을 사용하고 있지만이 경우 특정 쿼리가 필요합니다. ID로 채워진 배열이 있고 일부 작업 후에는 이러한 ID 및 기타 특정 조건 중 하나를 사용하여 모든 개체를 가져와야합니다. 나는이 쿼리를해야 할 순간영역 쿼리에 NSArray 전달하기 objectsWhere

, 나는 (ID의 배열이 동적으로 가득)이 데이터를 가지고 :

그래서
NSArray *IDs = @[@(1203), @(2421), @(3034), @(2024)]; 
    NSString *predicateString = @"isSongFromCatalog = 1 && researchScore > 0"; 
    RLMResults *result = [KFSong objectsWithPredicate:[NSPredicate predicateWithFormat:predicateString]]; 

, 어떻게 단지를 얻기 위해 내 조건에 조건을 추가 할 수 있습니다 이 배열에 포함 된 ID를 가진 객체는 무엇입니까?

SELECT * FROM myTable WHERE ID IN (IDs); 

이미 모든 ID를 가진 술어를 구축했지만,이 솔루션은 정말 비용없이 최적화입니다 : SQL에서

, 배열을 확인하는 그런 요청에 해당 될 것입니다 ... 나는 또한 키워드 ANY을 사용하려고 시도하지만 RLMArray를 사용하지 않습니다. 그래서, 나는 아이디어가 부족합니다. IN에 해당하는 항목이 있습니까?

영역의 웹 사이트에서 사용할 수있는 문서에서
+1

한 줄 더 말하면, 문제를 줄이려면 NSString을 사용하여 술어를 작성하지 말고 NSPredicate 자체를 사용하십시오. NSPredicate는 이상한 문자를 제거하고 탈출 할 수있는 특별한 능력을 가지고 있습니다. NSString은 매우 리터럴이므로 쉽게 버그가 발생할 수 있습니다. – yoshyosh

+0

완료시 이는 술어와 영역을 사용하는 모든 사람들에게 유용한 문서입니다. http://realm.io/news/nspredicate -컨닝 지/ – tbaranes

답변

2

, 당신은 찾을 수 있습니다 술어를 구축에 대한 자세한 내용은 가이드 프로그래밍

참조 애플의 술어를. 영역은 많은 공통적 인 술어를 지원합니다 :

이름 IN { 'Lisa', 'Spike', 'Hachi'}와 같은 봉쇄 피연산자 Nil comparison ==,! = 예. [Company objectsWhere : @ "ceo == nil"] 이 값은 관계가있는 객체에만 적용됩니다 (예 : ). ceo는 회사 모델의 속성입니다.

찾고 계신 것이 맞습니까?