NSDiacriticInsensitivePredicateOption不受Realm支持

我有一个文本属性的DictObject包含一些越南的字母,如“Sống”。

 @interface DictObj : RLMObject @property NSString *text;//Ex: sống @end 

我想使用BEGINSWITH[cd]来执行变音不敏感search,但Realm目前不支持它:

 RLMResults *fetchedResults = [DictObj objectsInRealm:realm where:@"text BEGINSWITH[cd] %@",inputText]; 

我可以使用kCFStringTransformStripDiacritics来转换我的input文本,但是我不知道如何在string已经存储在Realm文件中时执行该string转换。

Realm Objective-C v2.5.0增加了对大多数string操作的变音符不敏感修饰符的支持。 除LIKE以外,所有支持的string比较运算符都支持[d]修饰符。

请注意,在执行不符号变化的比较中存在性能折衷。 如果你正在做非常频繁的查找,可能会更好的是预先计算一个string的版本,并将其删除,并将其存储在模型的第二个属性中。 然后,您可以在查询中使用不带变音符的属性,同时继续使用原始属性进行显示。 如果在Realm中存储了现有数据,则可以将额外的属性添加到您的类中,并将其填充到迁移中的现有对象。