RealD不支持NSDiacriticInsensitivePredicateOption

时间:2015-11-17 14:57:42

标签: ios objective-c nsstring realm

我的DictObject文字属性包含一些越南字母,例如"Sống"。

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

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

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

我可以使用kCFStringTransformStripDiacritics转换输入文本,但是当字符串已经存储在Realm文件中时,我不知道如何执行字符串转换。

1 个答案:

答案 0 :(得分:3)

Realm Objective-C v2.5.0在大多数字符串操作上添加了对变音符号不敏感修饰符的支持。除LIKE之外的所有受支持的字符串比较运算符现在都支持[d]修饰符。

请注意,在执行变音不敏感比较时存在性能折衷。如果您进行非常频繁的查找,最好预先计算带有变音符号的字符串版本,并将其存储在模型的第二个属性中。然后,您可以在查询中使用不带变音的属性,同时继续使用原始属性进行显示。如果您的Realm中存储了现有数据,则可以将额外属性添加到您的类中,并将其填充为现有对象within a migration