所以这是一个问题。
我有一个字符串
Белый Клык-0.fb2
NSString方法长度返回16
在Core Data(后端 - sqlite)中保存字符串后
NSString方法长度返回17,但在视觉上字符串保持不变
Белый Клык-0.fb2
显然方法isEqualToString:return NO
在实验中花了很多时间之后,我很清楚这个问题是这封信:
й
删除此信解决问题。
但它让我疯狂,为什么会发生这样的事情?
这里的解决方法有效,但不满足我:
这是dosnt工作的解决方法:
请在Core Data中保存后帮助我理解字符串的运行情况。
我有更优雅的解决方案吗?
答案 0 :(得分:3)
该问题可能与unicode normalization有关。所以Coredata似乎存储了分解的字符串(所以й
计数为2 - 一个用于字母,一个用于重音)这就是为什么你得到长度的差异。如果您在将其与Coredata返回的字符串进行比较之前尝试分解原始字符串,则应该可以正常工作:
[yourOriginalString decomposedStringWithCanonicalMapping]
现在,背后的原因超出了我的专业领域。我经常使用coredata来管理我的模型,并且曾经多次使用希腊语/俄语字符串,从未遇到过这样的问题。如果有人可以对此进行扩展并获得一些启示,我也会对这个主题非常感兴趣。