2015-03-13 88 views
0

我有兩個表PhotoPhotographer。 下面是表格的結構。客觀c - 取數據(核心數據)

Photo and Photographer

我想取誰採取了一個名爲「熊貓」的照片全部Photographers的名稱。

這是我的代碼,但由於某種原因它返回空。

NSArray *matchingPhotographers; 
NSFetchRequest *fetch = [[NSFetchRequest alloc]init]; 

NSEntityDescription *desc = [NSEntityDescription entityForName:@"Photographer" inManagedObjectContext:context]; 
[fetch setEntity:desc]; 
[fetch setPredicate:[NSPredicate predicateWithFormat:@"photo.name like[c] %@",@"Panda"]]; 

NSError *error; 
matchingPhotographers = [context executeFetchRequest:fetch error:&error]; 

NSLog(@"Photographers: %@", matchingPhotographers); 

我做錯了什麼?該查詢肯定會返回至少1名攝影師。

感謝

+0

第一眼看不出有什麼問題。你確定它是熊貓/熊貓? – 2015-03-13 07:51:20

回答

1

photo是一個一對多的關係,所以它更容易使用子查詢謂詞計算的關係相匹配,你的標準照片:

@"SUBQUERY(photo, $p, $p.name ==[c] %@)[email protected] > 0", @"Photo" 

注意,我還沒有使用所以它不是一個正則表達式比較。

+0

另外,'photo'會更好地命名爲'photos',所以你記得它是一對多 – Wain 2015-03-13 07:53:06

2

照片是一個集合,所以你的前提必須是:

[fetch setPredicate:[NSPredicate predicateWithFormat:@"ANY photo.name like[c] %@",@"Panda"]]; 

該斷言認定「攝影師」,它必須在列表中的一個照片(他的照片的集合中)與像「熊貓」這個名字。