Wer*_*1go 5 core-data objective-c nsstring nsstringencoding
所以这是一个问题.
我有一个字符串
????? ????-0.fb2
Run Code Online (Sandbox Code Playgroud)
NSString方法长度返回16
在Core Data中保存字符串后(后端--sqlite)
NSString方法的长度返回17,但在视觉上字符串保持不变
????? ????-0.fb2
Run Code Online (Sandbox Code Playgroud)
显然方法是isEqualToString:返回NO
花了很多时间在实验中,我很遗憾这个问题是这封信:
?
Run Code Online (Sandbox Code Playgroud)
删除此信解决问题.
但它让我疯狂,为什么会发生这样的事情?
这里的解决方法有效,但不满足我:
以及dosnt工作的解决方法:
在Core Data中保存后,请帮助我了解字符串发生了什么.
还有更优雅的解决方案吗?
该问题可能与unicode 规范化有关。所以 Coredata 似乎存储了分解后的字符串(因此\xd0\xb9计数为 2 - 一个用于字母,一个用于重音),这就是为什么您会得到长度差异。如果您在将原始字符串与 Coredata 返回的内容进行比较之前尝试分解原始字符串,它应该可以工作:
[yourOriginalString decomposedStringWithCanonicalMapping]\nRun Code Online (Sandbox Code Playgroud)\n\n现在,这背后的原因超出了我的专业领域。我经常使用 coredata 来管理我的模型,并且多次使用希腊/俄罗斯字符串,但从未遇到过这样的问题。如果有人可以对此进行扩展并阐明一些观点,我也会对这个主题非常感兴趣。
\n