使用NSPredicate

时间:2016-07-19 11:35:33

标签: core-data fetch

我想在sqlite db中进行电话号码搜索。电话表有一个数字字段,其中包含字符串值(例如:+1(2-34)56-78)。

如果用户输入搜索文本为" 234",那么我需要使用NSPredicate获取仅包含数字的电话号码(消除所存储的字符串中的所有其他字母或特殊字符)并进行比较它与输入的字符串。我应该在获取请求中使用谓词吗?

我尝试使用以下谓词,但它并没有给我预期的结果:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"contactName != null AND SUBQUERY(phoneList, $phone, ANY $phone.number CONTAINS[c] %@).@count > 0",searchText];

有没有办法完成这项工作?我可以使用带NSPredicate的正则表达式吗?

1 个答案:

答案 0 :(得分:1)

NSPredicate不支持这种匹配。您的核心数据模型应包含您的应用程序进行过滤所需的数据 - 这可能意味着用户通常无法看到的额外字段。如果需要匹配数字而不考虑非数字字符,则应添加包含该数据的字段。如果实际字符串为+1 (2-34)56-78,请在存储12345678的位置添加辅助字段。在谓词中使用此额外字段。