iphone - 使用单个搜索字符串核心数据查询多列

标签 iphone objective-c cocoa-touch xcode core-data

我有一个简单的核心数据模型,具有两个字符串属性(大小和类别)。给定一个像“小部件”这样的搜索字符串,是否可以返回与所有查询词匹配的至少一个属性的记录(即所有具有“小”尺寸和“小部件”类别的记录)?我目前有:

NSString *search = @"small widget"
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"size contains[cd] %@ OR category contains[cd] %@", search, search];
...

这不会返回任何结果(因为没有类别或大小等于“小部件”)。有什么建议么?请注意,搜索字符串将由用户从文本字段输入,并且可能以任何顺序出现,因此我无法手动拆分。

最佳答案

我还没有测试过,但看起来你想要这个:

NSString *search = @"small widget";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ contains[cd] size AND %@ contains[cd] category", search, search];

搜索字符串将包含(或不包含)尺寸和类别,您应该询问搜索字符串中是否包含当前尺寸或类别。

您还可以拆分搜索字符串并修改谓词。您应该从它们中找出表现更好的一个

NSString *search = @"small widget";
    NSArray *array = [search componentsSeparatedByString:@" "];
    NSMutableArray *subPredicates = [NSMutableArray array];
    for (NSString *q in array) {
        [subPredicates addObject:
         [NSPredicate predicateWithFormat:@"size contains[cd] %@ OR category contains[cd] %@", q, q]];
    }
    NSCompoundPredicate *predicate = [[[NSCompoundPredicate alloc] initWithType:NSAndPredicateType
                                                                 subpredicates:subPredicates] autorelease];

关于iphone - 使用单个搜索字符串核心数据查询多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5036976/

相关文章:

ios - 我们可以根据我的要求使用核心图或任何其他图形库绘制折线图吗?

objective-c - 自动调用objective c中的类方法

ios - NSMutableArray 行为怪异

iphone - 找到 NSString 的正确宽度

iphone - 如何设置 UIScrollView 的滚动位置?

iphone - 如何从十六进制 NSString 获取十进制整数

ios - 您需要 iOS 上的数据保护功能吗?

objective-c - UITableViewController 释放

ios - 为什么弹出嵌套在 UISplitViewController 中的 UINavigationController 的 Controller 会为整个 splitView 设置动画?

ios - 在动画中显示图像的一部分