如果搜索与包含特殊字符的其他数据相似的数据,则从 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-BC
或AB-C
,先去掉-
,然后搜索匹配serialNumberSearch
字段的结果。
根据您的描述,结果将包括任何匹配的内容。
我已经在我的应用程序中实现了核心数据库并从 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-BC
或AB-C
,先去掉-
,然后搜索匹配serialNumberSearch
字段的结果。
根据您的描述,结果将包括任何匹配的内容。