2011-01-20 54 views
4

在覈心數據中,我有一個名爲keyword的實體具有「text」屬性。我想查找包含在特定sting中的所有關鍵字對象。NSPredicate用於獲取字符串中的關鍵字

我想:

[NSPredicate predicateWithFormat:@"%@ contains[c] text", myString]; 

但這崩潰。看起來好像它只會在倒過來時才起作用。

+0

你能解釋一下你想要的更好嗎?你正在尋找所有的關鍵字實體`k`,其中`k.text包含myString`,或者所有的實體`k.myString包含文本`,其中myString是關鍵字上的變量屬性名? – Tim 2011-01-20 08:06:32

+0

相反,我正在尋找在mystring中包含k.text(包含在內)的所有關鍵字實體。另外應該注意的是,關鍵字可能比單個單詞長,所以它們更像是關鍵短語。 – 2011-01-20 23:31:00

回答

3

謂詞在實體上起作用,所以你的謂詞顛倒了。由於您的實體的文本屬性包含一個字,你會分割字符串轉換成多個單詞,然後測試:

// This is very simple and only meant to illustrate the property, you should 
// use a proper regex to divide your string and you should probably then fold 
// and denormalize the components, etc. 
NSSet* wordsInString = [NSSet setWithArray:[myString componentsSeparatedByString:@" "]]; 
NSPredicate* pred = [NSPredicate predicateWithFormat:@"SELF.text IN %@", wordsInString]; 
0

我覺得你在反方向做。

試試這個。

[NSPredicate predicateWithFormat:@"text contains[cd] %@", myString];