使用NSPredicates和NSFetchedResultsController忽略WhiteSpaces

时间:2014-04-07 08:22:44

标签: ios iphone core-data nspredicate nsfetchedresultscontroller

我有一个简单的应用程序,其中包含UITableViewController,用户可以在另一个视图中将一些信息添加到一组UITextFields中。该日期会保存到Core Data,并使用UITableView填充NSFetchedResultsController

我遇到过一些奇怪的情况,用户出于某种原因在一个条目之前放了一个空格。因此,如果条目是"婚礼",一些用户(意外地)在婚礼前放置一个空格,所以它在开始时变成了婚礼空间。

正因为如此,我的UITableView将其作为单独的条目对待" Wedding"因为我的UITableView根据事件设置为按字母顺序排列,所以在周年纪念日之前出现带有空格的婚礼,而在周年纪念日之后出现没有空格的婚礼。

考虑到这一点,我希望能够忽略空格,以便用户可以在前面输入带有或没有空格的婚礼,并且它:

1)始终忽略空间并保持UITableView的字母性质 2)将婚礼视为同一条目(有和没有空格)。

我的NSPredicate看起来像这样:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Occasion" inManagedObjectContext:managedObjectContext];
fetchRequest.entity = entity;
NSPredicate *o = [NSPredicate predicateWithFormat:@"categories.occasion.@count !=0"];
if ([self.eventSearchBar.text length] > 0) {
    NSPredicate *eventPredicate = [NSPredicate predicateWithFormat:@"title CONTAINS[c] %@", self.eventSearchBar.text];
    NSPredicate *compPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[o, eventPredicate]];

    [fetchRequest setPredicate:compPredicate];
}
else
{
    [fetchRequest setPredicate:o];

}

任何关于忽略空白区域的指导都非常有效。我尝试过将CONTAINS这个词改成MATCHES,但这并没有什么不同。

0 个答案:

没有答案