我在Introducing CloudKit的第31分钟遇到了TOKENMATCHES并且很好奇,所以我进行了谷歌搜索,但在another StackOverflow post之外发现的很少。
NSPredicate(format: "ALL tokenize(%@, 'Cdl') IN allTokens", "after session")
实际上,令人困惑的是,该帖子使用的语法与WWDC视频不同:
NSPredicate(format: "allTokens TOKENMATCHES[cdl] %@", "bob smith")
据我了解,这些查询返回在一个或多个文本字段中包含所有标记化字符串参数的所有记录。后一种情况会使用person.name = "bob"
和person.last = "smith"
来获取记录,以及记录person.note = "Bob likes Joseph Smith."
的记录。 (更正欢迎。)
所有这一切,这个问题不是关于完整的谓词,而只是cdl
(或Cdl
?)参数/修饰符/ whateverthehellitis。
TL; DR-什么' cdl
是什么意思,还有其他值可以进入" slot"格式字符串?
< rant> 为什么predicate syntax documentation全面无效?好像Apple的经理们害怕NSPredicate的神秘,古老的力量;没有人敢指派技术作家和工程师使其他人可以使用其他简单的课程。 Google搜索"nspredicate TOKENMATCHES"仅提供8个结果,其中没有一个位于apple.com。 < / rant>
答案 0 :(得分:3)
发现它,至少!
文档:NSComparisonPredicateOptions
typedef enum NSComparisonPredicateOptions : NSUInteger {
NSCaseInsensitivePredicateOption = 0x01, //==> [c]
NSDiacriticInsensitivePredicateOption = 0x02, //==> [d]
NSNormalizedPredicateOption = 0x04 //==> [n]
} NSComparisonPredicateOptions;
+ NSLocaleSensitivePredicateOption //==> [l]
所以基本上:
[c]
:大写与小写相同(即:A == a)
[d]
:带有diacritics的字符(急性重音,cedilla等)与没有它的字符相同(即à== a(重音)
[l]
:这是针对本地化的特殊性。 Apple示例使用德语“double s”(Eszett)作为示例使用“straße”和“strasse”。