1
我能得到像任何一對多一對多謂詞
ANY alpha.prop LIKE $SEARCH_TERM
謂語爲工作在阿爾法是一個一對多的關係,但是我如何才能
ANY alpha.beta.prop LIKE $SEARCH_TERM
要工作alpha是一對多的關係,並且beta是一對多關係alpha,這會引發異常'多對多密鑰不允許在這裏'。
我能得到像任何一對多一對多謂詞
ANY alpha.prop LIKE $SEARCH_TERM
謂語爲工作在阿爾法是一個一對多的關係,但是我如何才能
ANY alpha.beta.prop LIKE $SEARCH_TERM
要工作alpha是一對多的關係,並且beta是一對多關係alpha,這會引發異常'多對多密鑰不允許在這裏'。
確定的方式要做到這一點是做底子元素的搜索代替查詢字符串變成
prop LIKE $SEARCH_TERM
,然後通過結果枚舉並抓住父母的父母把它們粘在一套刪除重複,像
NSMutableSet * mySet = [NSMutableSet set];
for(MyChild * c in [self.managedObjectContext executeFetchRequest:theFetchRequest error:&theError])
{
[mySet addObject:c.parent.parent];
}
你可以分兩步做。讓我們假設b
從A
到B
和c
一個一對多的關係是從B
一個一對多的關係C
,那麼你可以先獲取該相關的任何C
對象具有所需性能的所有B
對象:
NSFetchRequest *request1 = [NSFetchRequest fetchRequestWithEntityName:@"B"];
NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"ANY(c.prop) LIKE %@", searchTerm];
request1.predicate = predicate1;
NSArray *bList = [context executeFetchRequest:request1 error:NULL];
然後取被從中間結果與任何B
對象的所有對象A
:
NSFetchRequest *request2 = [NSFetchRequest fetchRequestWithEntityName:@"A"];
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"ANY(b) IN %@", bList];
request2.predicate = predicate2;
NSArray *aList = [context executeFetchRequest:request2 error:NULL];
您是否在覈心數據中設置了這種關係的反轉? – 2012-08-10 07:52:48