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