如果搜索与包含特殊字符的其他数据相似的数据,则从 CoreDataBase 中搜索数据

Search data form CoreDataBase if search data similar with another data that contain special character

我已经在我的应用程序中实现了核心数据库并从 table 获取数据。 应用要求是如果数据包含或不包含连字符(-)

,则获取相同的数据

对于实验 1: Table 包含以下数据

   Id       Serialnumber     Name
   1          ABC          ABC2015
   2          A-BC         AB-C001

Table 列 SerialNumber 包含 ABC、A-BC,如果用户按 AB-C 搜索,则始终认为与 ABC、A-BC 相同

实验 2:

Id    Serialnumber     Name
1        AB-C         AB-C2015
2        A-BC         A-BC001

Table 列序列号包含 AB-C、A-BC,如果用户按 ABC 搜索,则始终认为与 AB-C、A-BC 相同

这是我的代码

+(NSMutableArray*)fetchDataFromCoreDatabase:(NSString*)searchString {
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:k_CoreDBEnity_SerailnumerinManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Serialnumber == %@",searchString];
[fetchRequest setPredicate:predicate];
NSError *error = nil;
NSArray *result = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (error) {
    nslog(@"Unable to execute fetch request.");
    error, error.localizedDescription]];
}
return [result mutableCopy];}

那么有什么想法可以实现这种方法吗? 提前致谢!

如果是我,我会添加一个额外的隐藏字段,只用于搜索,不包括连字符。然后我会在获取之前删除连字符。在您的示例中:

  • 添加一个名为 serialNumberSearch 的字段。对于您的示例数据,这始终是 "ABC",没有 -.
  • 搜索时,如果得到A-BCAB-C,先去掉-,然后搜索匹配serialNumberSearch字段的结果。

根据您的描述,结果将包括任何匹配的内容。