6

我试图做一个谓词,包含特殊字符NSPredicate - iPhone

例如:

[[myIngredients filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"name BEGINSWITH[c] %@", [alphabet objectAtIndex:idx]]]; 

在这里,我会得到所有开头的成分(让说的IDX = 5)'e'。由于我必须用英语和法语来做我的应用程序,因此某些成分的特殊字符如'é'或'œ'以'o'开头。我如何在谓词中包含这些特殊字符?

最佳

回答

10

我想你可能会寻找一个NSPredicate支持“音调符号不敏感”的标志。这就像你已经使用的“c”标志,除了你使用“d”。像这样:

… predicateWithFormat:@"name BEGINSWITH[cd] %@", … 

现在字符串“E”也将匹配“E”,“E”,“E”,等等。

+0

谢谢,它的功能就像一个魅力......除了œ!你有这个好的解决方案吗?否则,我会添加一个异常。 – ncohen 2010-03-19 03:30:56

+0

我唯一能想到的就是使用复合谓词。创建一个NSPredicate以匹配“o”和另一个匹配“œ”。然后将它们加在一起:'[NSCompoundPredicate orPredicateWithSubpredicates:[NSArray arrayWithObjects:p1,p2,nil]]'。 – 2010-03-19 03:36:50

+0

精彩的小费......非常感谢。 – 2015-03-10 09:38:17