我想过滤掉空记录,但我无法删除没有数据但有一系列空格的记录。
我有一个名为“name”的实体A.我想查询实体A的所有对象,这些对象具有属性名称的一些文本值而不是“空间系列”,换句话说,我需要在查询中包含它 - >
[name stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet].length!=0
但我所能做的就是检查字符串的长度,包括不正确的空格。 我正在使用 - >
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"name!=' ' or name.length!=0 "];
欢迎您提出建议。
答案 0 :(得分:0)
你可以修剪字符串并检查字符串的长度,如下所示:
NSString *trimmedString = [aRecordString stringByTrimmingCharactersInSet:[[NSCharacterSet characterSetWithCharactersInString:@" "]]];
if (trimmedString.lenght > 0) {
// the string if valid or at least is not just a spaces string
}
else {
// the string is not valid or was just a spaces string
}
因此,如果要在谓词中应用此检查,可以使用带块的谓词:
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
// do your checks here and return TRUE or FALSE if the ovject match your criteria
}];
答案 1 :(得分:0)
如果您尝试删除特定字符串属性仅包含空格的对象,请使用基于正则表达式的谓词,然后删除您找到的任何对象。
使用这样的谓词进行提取会找到所有这些对象:
NSPredicate *reqPredicate = [NSPredicate predicateWithFormat:@"attributeName matches ' +'"];
找到后,使用-[NSManagedObjectContext deleteObject:]
删除生成的对象。