2010-08-04 55 views
2

我試圖使用NSPredicate搜索字符串中的CoreData對象匹配的數組像這樣產生NSPredicate字符串匹配名稱或客戶端名稱與一個不區分大小寫(注:這應該允許部分匹配,從而使「應用」將匹配「蘋果公司」等):在謂語提到對NSSet中的

(name LIKE[cd] %@) OR (ANY companies.name LIKE[cd] %@) OR (ANY companies.clients.name LIKE[cd] %@) 

的CoreData關係看起來像這樣:

SELF -> (NSString *) name 
SELF -> (NSSet *) companies -> (NSString *) name 
SELF -> (NSSet *) companies -> (NSSet *) -> clients -> (NSString *) name 

每當我試圖通過上面的謂詞來篩選,我發現在我的控制檯如下:

HIToolbox: ignoring exception 'Can't do regex matching on object {(
    "Apple Inc.", 
"Test Co.", 
Microsoft 
)}.' 

如果我理解正確的事情,它看起來好像試圖匹配反對的keyPath「 companies.clients.name「返回一個NSSet(或其他對象),其中NSString(名稱)是預期的。

我在做什麼錯?

回答

3

companies.clients.name將返回NSSet s的集合,其中集合中的每個元素都是一個公司客戶名稱的內容(即NSSet)。您可能希望在謂詞字符串中使用[email protected]

請參閱關鍵值編碼中使用Set and Array Operators的指南。

+0

@distinctUnionOfSets取得了訣竅。非常感謝你。 – ndg 2010-08-04 22:07:54