我試圖弄清楚如何連接屬性名稱。我有一個縣和地區的屬性,我想查詢如NSPredicate連接屬性
[NSPredicate predicateWithFormat:@"county + district contains[cd] %@",searchBar.text]
給我未實現的SQL生成的謂詞錯誤。我不確定如何實施NSPredicate。 謝謝
我試圖弄清楚如何連接屬性名稱。我有一個縣和地區的屬性,我想查詢如NSPredicate連接屬性
[NSPredicate predicateWithFormat:@"county + district contains[cd] %@",searchBar.text]
給我未實現的SQL生成的謂詞錯誤。我不確定如何實施NSPredicate。 謝謝
這應該給你一個如何做一些更復雜的搜索的想法。它將匹配查詢的「縣區」,「區縣」等
NSArray *searchTerms = [searchBar.text componentsSeparatedByString:@" "];
NSString *predicateFormat = @"(county contains[cd] %@) OR (district contains[cd] %@)";
NSPredicate *predicate;
if ([searchTerms count] == 1) {
NSString *term = [searchTerms objectAtIndex:0];
predicate = [NSPredicate predicateWithFormat:predicateFormat, term, term];
} else {
NSMutableArray *subPredicates = [NSMutableArray array];
for (NSString *term in searchTerms) {
NSPredicate *p = [NSPredicate predicateWithFormat:predicateFormat, term, term];
[subPredicates addObject:p];
}
predicate = [NSCompoundPredicate andPredicateWithSubpredicates:subPredicates];
}
[fetchRequest setPredicate:predicate];
更多解釋見Cocoa Is My Girlfriend: Adding iTunes-style search to your Core Data application。
[NSPredicate predicateWithFormat:@"county contains[cd] %@ AND district contains[cd] %@",searchBar.text,searchBar.text];
只要嘗試上述代碼行,它會幫助你。
那將是一個'或'運營商,如果我理解正確的OP意圖 –
@讓DenisMuys在他指定的國家+區這就是爲什麼我使用的問題,在這裏 – Raj
精細。然而,這並不回答OP的原始問題,即「如何連接屬性[by]名稱[在謂詞中]?」,即使OP的確實不是*意味着*。 –
我沒有類似的東西,並得出結論,像cekisakurek,最好的方法是串聯的字段到一個共同的字段(/姓更相關)
- (NSString *)fullName {
return [NSString stringWithFormat:@"%@ %@", self.firstName, self.lastName];
}
,然後過濾使用該字段包含[CD]」
[NSPredicate predicateWithFormat:@"fullName contains[cd] %@", self.searchBar.text];
這不等於。串聯「ABC」+「DEF」將匹配「CDE」。你的解決方案不會。我明白,在OP的情況下,這可能不是一個問題。這將在我的。所以問題就是:如何在匹配之前連接實體的2列? –
@ Jean-DenisMuys你有沒有找到答案? http://xkcd.com/979/ – figha
我最終添加了一個派生的屬性,我計算是兩個源代碼的連接。然後我有一個關於派生屬性的謂詞。這浪費了存儲在我的CoreData數據庫中,但這是我可以支付的價格。我可能已經把它作爲一個瞬態屬性,但我不確定你可以查詢一個屬性。 (TBH,我什至沒有嘗試) –