NSPredicate与string完全匹配
我有这样一个NSPredicate:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"entity.name CONTAINS %@", myString];
但是,这将返回包含该string的任何东西。 例如:如果我的entity.name的其中:
text texttwo textthree randomtext
而myString
是text
那么所有这些string将匹配。 我喜欢它,如果myString
是text
它只会返回名称text
的第一个对象,如果myString
是randomtext
text
,它将返回名称为randomtext
的第四个对象。 我也正在寻找它是不区分大小写 ,它忽略空白
这应该做到这一点:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"entity.name LIKE[c] %@", myString];
LIKE
匹配string? 和*作为通配符。 [c]
表示比较应该不区分大小写。
如果你不想要? 和*被视为通配符,您可以使用==
代替LIKE
:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"entity.name ==[c] %@", myString];
NSPredicate谓词格式string语法文档中的更多信息。
您可以使用正则expression式匹配器来处理谓词,如下所示:
NSString *str = @"test"; NSMutableString *arg = [NSMutableString string]; [arg appendString:@"\\s*\\b"]; [arg appendString:str]; [arg appendString:@"\\b\\s*"]; NSPredicate *p = [NSPredicate predicateWithFormat:@"SELF matches[c] %@", arg]; NSArray *a = [NSArray arrayWithObjects:@" test ", @"test", @"Test", @"TEST", nil]; NSArray *b = [a filteredArrayUsingPredicate:p];
上面的代码构造了一个正则expression式,它匹配在开始和/或结束时带有可选空白的string,目标单词由“单词边界”标记\b
包围。 matches
后的[c]
表示“不区分大小写”。
这个例子使用一个string数组; 要使其在您的环境中工作,请用entity.name
replaceSELF
。
- 核心数据获取请求失败:'NSInternalInconsistencyException',原因:'语句仍然处于活动状态'
- 核心数据对象的唯一ID
- 在上下文崩溃的情况下保存核心数据
- 问题加载子实体mangedobject在coredata
- 构build一个复杂的NSCompoundPredicate的最好方法是什么?
- 在我的TableView中实现一个SearchBar,并使用NSFetchedResultsController和适当的谓词来使search工作
- 使用默认数据初始化核心数据
- NSPersistentStoreCoordinator在读取特定NSManagedProperty后释放NSManagedObject时抛出EXC_BAD_ACCESS
- 如何观察是否从managedObjectContext中删除了NSManagedObject