Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何创建NSPredicate以查找具有前导数值的条目?_Iphone_Objective C_Core Data_Nspredicate - Fatal编程技术网

Iphone 如何创建NSPredicate以查找具有前导数值的条目?

Iphone 如何创建NSPredicate以查找具有前导数值的条目?,iphone,objective-c,core-data,nspredicate,Iphone,Objective C,Core Data,Nspredicate,我正在使用NSPredicates根据name属性获取实体。为以字母开头的名称创建谓词很容易(@“name BEGINSWITH%@”,searchLetter),但是现在我想获取名称以数字或非字母字符开头的所有实体 这里合适的谓词表达式是什么 现在我不想深入到谓词编程,因为这就是我现在所需要的,时间过得飞快。所以,请不要告诉我谓词编程指南,我只需要那个表达式:) 谢谢大家 您可以使用“MATCHES”,其中可以使用任何正则表达式(例如^[0-9])进行比较。但据我所知,这在处理核心数据时不起作

我正在使用NSPredicates根据name属性获取实体。为以字母开头的名称创建谓词很容易(@“name BEGINSWITH%@”,searchLetter),但是现在我想获取名称以数字或非字母字符开头的所有实体

这里合适的谓词表达式是什么

现在我不想深入到谓词编程,因为这就是我现在所需要的,时间过得飞快。所以,请不要告诉我谓词编程指南,我只需要那个表达式:)


谢谢大家

您可以使用“MATCHES”,其中可以使用任何正则表达式(例如^[0-9])进行比较。但据我所知,这在处理核心数据时不起作用


另一种解决方案是使用新的(OS X 10.6,iOS 4.0)
谓词WithBlock:
并使用字符串方法自己检查条件。

如果
匹配的
运算符不处理提取请求,那么您基本上必须手动执行以下操作:

NOT(name BEGINSWITH[cd] 'a' OR name BEGINSWITH[cd] 'b' OR ... OR name BEGINSWITH[cd] 'z')
那会得到所有不以字母开头的东西。同样地:

name BEGINSWITH[cd] '0' OR name BEGINSWITH[cd] '1' OR ... OR name BEGINSWITH[cd] '9'
会得到所有以数字开头的东西

编辑该评论引发了另一个想法:

如果可以提取
名称的第一个字母
,则可以执行以下操作:

NOT(name[0] IN %@), arrayOfLetters

name[0]
name
的第一个字符,
arrayOfLetters
是字母字符的
NSArray

我没有尝试过,但可能会抛出一个字母数组,因为谓词处理器在其他地方似乎处理得很好
predicate=“NOT(name BEGINSWITH[cd]]@)”,arrayOfLetters无论如何,它会更漂亮,而且可能解析得更快。当然,假设它能正常工作。:)